while循环中的Ifstatement未读取Ifstatement的最后输出

2024-05-19 10:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着把列表x中的两个数字之和,其中的20除以该和是不可能的,放到列表z中。我的代码不符合只能使用列表x中两个数字的组合的规则。例如,35是无效的,因为它不能通过添加列表x中的两个数字来形成。但是,它仍然出现在列表z的结果中

另外,我将“target”加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]


Tags: and代码intarget列表forif规则
2条回答

请尝试以下代码:

x = [200, 100, 50, 20, 10, 5]
z = []
for i in range(0,len(x)):
    for j in range(i+1,len(x)):
        sum=x[i]+x[j]
        if sum%20!=0:
            z.append(sum)
z.reverse()
print(z)

您想要的输出:

输出: [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)

相关问题 更多 >

    热门问题