我的CSDN主页My Python 学习个人备忘录我的博文推荐
CSDN“每日一练”(Python )题目
- 题目代码运行效果完整代码
练习题目 看到题目与《三数之和》类似,就“偷”其代码。鸞鸞 缩进太深,代码有点儿丑。若若
target = 0, 1, 2, 3, 4 打包输出四数和的符题数组。
python完整代码 (如果从语句注释不能清楚作用,请评论区留言指教和探讨。欄)
# coding: utf-8
def isvalid(lis, lis0):
'''判断组合有效'''
temp = lis0[:]
for i in lis:
#print(i) #调试用语句。
if i in temp: #i在原列表置flag为True,删除原列表中的第一个i并继续遍历。
flag = True
temp.remove(i)
else: #i不在原列表,置flag为False并退出遍历。
flag = False
break
return flag
#input(f'nn{isvalid([2, 5, 9, 5], [0, 5, 9, 2, 3, 5, 4])}') #该行为调试函数功能代码。
def isremove(lis, lis2):
'''比较两列表元素是否相同'''
if len(lis)!=len(lis2): #列表元素不等,返回False。
return False
temp = lis2[:]
for i in lis:
if i in temp: #i在比对列表置flag为True,删除比对列表中的第一个i并继续遍历。
flag = True
temp.remove(i)
else: #i不在比对列表,置flag为False并退出遍历。
flag = False
break
return flag
#input(f'nn{isremove([2, -1, -1], [-1, 2, -1])}') #该行为调试函数功能代码。
def find_nums(target): #查找符题数组函数。
nums_out = []
for i in nums:
for j in nums:
for m in nums:
for n in nums:
if i+j+m+n==target:
new_nums = [i, j, m, n]
if new_nums not in nums_out and isvalid(new_nums, nums): #组合有效且不重复,追加到输出数组。
flag = True
for k in nums_out: #判断输出数组中是否有相同元素数组,有则继续下一组合。
if isremove(k, new_nums):
flag = False
break
if flag is True: #组合数组不在输出数组中,追加组合数组。
nums_out.append(new_nums)
return nums_out
# Main Codes
s = '''四数之和'''
nums = [1, 0, -1, 0, -2, 2]
target = 0, 1, 2, 3, 4 #预设求和值数组。
if __name__=='__main__':
for i in target:
print(f'nn{s:.^38}nn数组:{nums},四数和值:{i}。n{"﹊"*21}nn符题组合:{find_nums(i)}nn{"The End":_^42}')
我的博文推荐:
排序数组中查找元素的重复起止位置(当前阅读1194)柱状图中最大矩形(当前阅读1596)电话拨号键盘的字母组合(当前阅读1206)密码强度检测器(当前阅读1662)求列表平衡点(当前阅读1694) 字符串统计(当前阅读1657)尼姆游戏代码优化版(当前阅读816)尼姆游戏(聪明版首发)(当前阅读3230)
参考文章:
上一篇: 生成器复习:无限项斐波那契数列
下一篇:
OPP三大特性:封装中的property通过内置对象理解python'正则表达式python中“*”的作用Python 完全自学手册海象运算符Python中的 `!=`与`is not`不同学习编程的正确方法
来源:老齐教室
CSDN实用技巧博文:
8个好用到爆的Python实用技巧python忽略警告



