2016-07-17 11 views
-1

2次元配列にif文を作成するにはどうすればよいですか?配列のif文

for row in range(6): 
    for column in range(7): 
     if board[row][column] > 0: 
      Draw = True 

私は、空白の正方形のグリッドを持っている6で7、および四角をクリックすると、その1の値とすべての正方形が今1 Iを作っクリックされたとき、それは0のままでない場合は与えられましたDraw = Trueが必要ですが、上のこのステートメントはグリッド全体ではなく、私が選んだ行と列を見つけます。

+0

はより明確にする必要があります。ボード全体が "1"のときdraw = Trueを設定するのはどういう意味ですか? – Wboy

+0

ええ、ああ、私が意味することは、申し訳ありません –

答えて

1

すべてが1の場合はボード全体をチェックすることを意味する場合は、単純な修正です。

DRAW = True 

for row in range(6): 
    for column in range(7): 
     if board[row][column] == 0: 
      DRAW = False 

他の方法は簡単です。

1

boardの値がすべて1の場合にのみ、DrawがTrueに設定されています。グリッドがクリックされた場合、コードはDrawに1を設定します。

解決策は簡単です。反対に考えるとDrawをTrueに設定し、グリッドが1でない場合はFalseに設定します。

Draw = True 
for row in range(6): 
    for column in range(7): 
     if board[row][column] == 0: 
      Draw = False 
1

あなたは、コレクション内のすべての値がTrueあなたはいつものiterableのすべての値は、あなたの中で、どの(与えられた条件を満たしていることを確認しall()機能で構築を使用することができますされている値を持っていることを確認する必要がある場合ケースは)i > 0次のとおりです。

に簡略化され得ることができ
if all(i > 0 for i in board[row] for row in range(6)): 
    Draw = True 

:正の値はトンを評価するので

if all(i for i in board[row] for row in range(6)): 
    Draw = True 

o True

1

あなたはWboyのforloop @に別の方法としてallを使用することができます。ここでは

all(x for y in z for x in y) 

#or x !=0 but that's redundant here since 1 equates to True. 

、zはあなたの2次元のリストになります。あなたは取得せずに、同様な凹凸寸法をこのように評価することができ、「動きが取れなく」ダウンなどの範囲

警告中:あなたはグリッドで空のリストを持っていた場合、その後、allまだここにtrueに評価されます。警告のため

例グリッド:

[[], 
[1, 1, 1], 
[1, 1], #some more rand elements of the grid, first one's the point. 
] 
+0

ああ、それを行うためにはるかに良い方法:) – Wboy