python - while 循环中的 if 语句未从 if 语句中读取最后一个输出
问题描述
我试图将列表 x 中两个数字的总和放入列表 z 中,其中该总和除以 20 是不可能的。我的代码不符合只能使用列表 x 中两个数字的组合的规则。因此,例如,35 是无效的,因为它不能通过将列表 x 中的两个数字相加来形成。但是,它仍然出现在列表 z 的结果中。
另外,我将“目标”加 5,因为 5 是列表 x 中的最小数字。
我究竟做错了什么?
x = [200, 100, 50, 20, 10, 5]
target = 5
combi=0
max = x[0]+x[1]
z = []
while target <= max:
for i in x:
if i < target:
pair = target - i
if pair in x:
combi = 1
if combi == 1 and target % 20 != 0:
z.append(target)
target += 5
print(z)
给定输出: [10, 15, 25, 30, 35, 45, 50, 55, 65, 70, 75, 85, 90, 95, 105, 110, 115, 125, 130, 135, 145, 150, 155, 165、170、175、185、190、195、205、210、215、225、230、235、245、250、255、265、270、275、285、290、295]
所需输出:[10、15、25、30、55、70、105、110、150、205、210、250]
解决方案
问题是您永远不会重置“combi”变量。这是您的固定代码
x = [200, 100, 50, 20, 10, 5]
target = 5
combi=0
max = x[0]+x[1]
z = []
while target <= max:
for i in x:
if i < target:
pair = target - i
if pair in x:
combi = 1
if combi == 1 and target % 20 != 0:
z.append(target)
target += 5
combi = 0
print(z)
推荐阅读
- flutter - 如何排除包:堆栈中的结果
- css - WordPress登录表单居中
- java - 如何使用扫描仪输入读取带有斜杠“/”的txt文件并将它们放入数组/字符串中
- c# - 如何从linq获取固定长度的数组?
- spring - Spring Webflux - 如何在 WebFilter 中调用响应式端点
- scala - Gatling:是否可以根据 if 语句在模拟中执行并发场景?
- expect - ping 响应后,Expect 脚本继续执行
- java - 如何创建可访问性服务的元数据引用的 XML 文件?
- javascript - WebRTC 简单应用程序卡在 iceConnectionState = 'new'。似乎没有建立连接
- javascript - Node.js 错误:每个 then() 应该返回一个值还是抛出?