私はPythonでチック・タック・トゥ・ゲームを作るのに苦労しており、チートしたくないので、ここでは非常に具体的な質問をしています。私のボードがリストである:関数内の入力を使ってリスト内の要素を変更する
私はそれがグリッドのように見えるようにするには、以下の機能と別れるlst = [1,2,3,4,5,6,7,8,9]
:
def board():
print (lst[:3])
print (lst[3:6])
print (lst[6:])
機能プリントを呼び出すように:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
私は入力を受け取り、リスト内の数字を文字列 'x'で置き換えようとしました:
def move():
move1=(input('Player 1: Type a number!'))
for x in lst:
if move1 == x:
lst[x-1] = 'x'
board()
これは、文字列を出力し、入力ボックスを提供しますが、リスト内の数字を「x」に置き換えません。私は機能に何か間違いがなければならないことを認識しています。誰かがそれを説明するために忍耐を持っているなら、私は非常に感謝します。
これで、ボードの数字を文字列に変換すると、よりよく見えます: ['1'、 '2'、 '3'] ['4'、 '5'、 '6' ] ['7'、 '8'、 '9']
そして、私はforループが 'x'のような文字列を見つけてそれを有効にしようとしていることに気付いたので、 (=「X」、などを場合のx!)それは「X年代をマークしたが、エラーが表示され、第2、PLのための時間だったときに、余分な条件になる前に
def move2():
move2=int(input('Player 2: Type a number!'))
for x in lst:
if x != 'x' and x != 'o' and move2 == int(x):
lst[move2-1] = 'o'
board()
move()
elif x != 'x' and x != 'o' and move1 != int(x):
print('Not that number!')
board()
move2()
:整数には、エラーが表示される場合がありますayerは数値を入力しますが(intは呼び出し可能ではありません)、今は何もしません。何か案は?
あなたの関数では 'lst'がどこに定義されていますか? –
ループ全体を 'lst [int(move1)-1)= 'x''で置き換えることができます –
入力を整数' move1 = int(input(' Player 1:Numberを入力! ')にキャストする必要があります) '。 @ 1 '==' 1 ': 'が偽ならば' move1 == x: 'は作動可能です。 –