我必须打印有序对的列表,其中x + y + z!= n。代码似乎无法正常工作
def main():
x = int(input())
y = int(input())
z = int(input())
n = int(input())
result = [[i,j,k] for i in range(0,x+1) for j in range(0,y+1) for k in range(0,z+1) if (x+y+z) != n]
print(result)
输入:
1
1
1
2
输出:
[[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]
我不应该得到有序对[0,1,1],[1,0,1],[1,1,0]。
请纠正我。
提前致谢!
答案 0 :(得分:3)
您将列表推导变量与用户的输入混合在一起。
替换:
if (x+y+z) != n
带
if (i+j+k) != n
答案 1 :(得分:0)
一个衬垫很棒,但是它们会让我感到困惑,所以我会扩展你的代码
result = []
for i in range(0, x+1):
for j in range(0, y+1):
for k in range(0, z+1):
if (i+k+j)!=n:
result.append([i,k,j])
它对我有用