2016-12-07 11 views
1

x + y + z!= nの順序付きペアのリストを出力する必要があります。コードが動作していないようです複数のループとif文を持つPythonのリスト理解

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]である。

私を修正してください。

ありがとうございます!

+1

私はあなたが 'i + j + k!= n'を意味すると思う、btw決してitertoolsについて聞いた? – polku

+2

sumert(i)!= n]の場合itertoolsの解決策[it for itertools.product(範囲(x + 1)、範囲(y + 1)、範囲(z + 1)) ' –

答えて

3

リストの解説変数をユーザーの入力と混合しました。

置き換えます

if (i+j+k) != n 

if (x+y+z) != n 

+0

おっと!愚かな間違い。助けてくれてありがとう – Raman

+2

@Raman 'itertools.product'を使ってネストされたループを置き換えることを検討するかもしれません –

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]) 

そしてそれは私の作品

関連する問題