首页 > 解决方案 > 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]

标签: python

解决方案


问题是您永远不会重置“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)

推荐阅读