You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python嵌套for循环如何实现C式逻辑?代码输出异常求助

解决Python嵌套for循环的问题

哦,我一眼就看到问题所在啦!你的嵌套循环范围写错了——Python里的range()函数是左闭右开的,也就是说range(x)只会生成从0到x-1的整数,而你需要的是包含输入值本身的所有不超过对应输入的整数,这才是问题的核心!

举个例子,当你输入x=1时,range(1)只会返回0这一个值,所以a永远只能取0;同理b和c也只能取0,自然程序只能输出[(0,0,0)]这一个组合,完全达不到你的需求。

修正后的代码

我们只需要把每个range()的参数改成输入值+1,让循环范围包含输入值本身,同时如果需要输出列表而非元组的话,把append里的括号改成方括号即可:

x = int(input())
y = int(input())
z = int(input())
n = int(input())
num_list = []
for a in range(x + 1):
    for b in range(y + 1):
        for c in range(z + 1):
            if a + b + c != n:
                num_list.append([a, b, c])
print(num_list)

测试你给出的输入1, 1, 1, 2,这个代码会输出你期望的结果:

[[0, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]

更简洁的Pythonic写法

如果你想让代码更简洁,可以用列表推导式来实现,逻辑是完全一样的:

# 一次性读取四个输入
x, y, z, n = [int(input()) for _ in range(4)]
# 用列表推导式生成符合条件的组合
num_list = [[a, b, c] for a in range(x+1) for b in range(y+1) for c in range(z+1) if a+b+c != n]
print(num_list)

内容的提问来源于stack exchange,提问作者Shahbaaz Sheikh

火山引擎 最新活动