board=[[1,0,8,5,12,16,24],[7,0,6,2,20,4,18],[13,0,9,10,22,23,17],[19,0,11,3,14,15,21]]
def move():
while board[0][6]!= 0 and board[1][6]!=0 and board[2][6]!=0 and board[3][6]!=0:
user_choice= int(raw_input('>'))
for lists in board:
for i in range(len(lists)):
if lists[i]== user_choice-1 and lists[i+1]==0:
lists[i+1]= user_choice
print print_board(board)
for a in board:
for i in range(len(a)):
if a[i]==user_choice:
a[i]=0
print print_board(board)
私はユーザーが数字(user_choice)を入力するゲームを作っています。プログラムは、user_choiceよりも小さい番号1を見つけます。ユーザーが8を選んだとすると、ゲームはボード上で7番の数字を見つけ、7の後の数字が0であれば、プログラムは0と8の位置を入れ替えます。私はネストされたifステートメントを持っていて、内部ステートメントはアウトターを無効にします
コードは2番目のif
[[1,0,8,5,12,16,24],[7,8,6,2,20,4,18],[13,0,9,10,22,23,17],[19,0,11,3,14,15,21]]
None
[[1,0,8,5,12,16,24],[7,0,6,2,20,4,18],[13,0,9,10,22,23,17],[19,0,11,3,14,15,21]]
None
[[1,0,0,5,12,16,24],[7,0,6,2,20,4,18],[13,0,9,10,22,23,17],[19,0,11,3,14,15,21]]
第一の出力は、第二の出力は、ように見える8
と7の後に0を置き換え:文はここに声明
がuser_choice = 8の典型的な出力の場合、出力は最初の取り消し実行します最初のボードを表示します。
第3の出力は、私は両方とも0
ここで注文が重要な理由を説明できますか? – tdammon
@tdammon最初に7を8に置き換えた後、8をすべて0に置き換えたので、順序が重要です。私はこの解決策を試していないが、有効な(7、0)ペアが決して見つからなかったときに8秒に切り替えることに注意する。 – sberry