Python 获得;TypeError:并非所有参数都在字符串格式化过程中转换";,不太清楚为什么
我正在为我的Python学习课程做一个UDE项目。目标是创建一个tic-tac-toe游戏,每当我出于某种原因运行脚本运行游戏时,当我选择在板上放置任一标记时,我都会得到错误:Python 获得;TypeError:并非所有参数都在字符串格式化过程中转换";,不太清楚为什么,python,Python,我正在为我的Python学习课程做一个UDE项目。目标是创建一个tic-tac-toe游戏,每当我出于某种原因运行脚本运行游戏时,当我选择在板上放置任一标记时,我都会得到错误: Traceback (most recent call last): File "C:\Users\zanec\Desktop\Udemy_Python_course\practice\milestone-1-tic- tac-toe-game.py", line 189, in <module> playe
Traceback (most recent call last):
File "C:\Users\zanec\Desktop\Udemy_Python_course\practice\milestone-1-tic-
tac-toe-game.py", line 189, in <module>
player_input()
File "C:\Users\zanec\Desktop\Udemy_Python_course\practice\milestone-1-tic-
tac-toe-game.py", line 137, in player_input
Player_1_lucky()
File "C:\Users\zanec\Desktop\Udemy_Python_course\practice\milestone-1-tic-
tac-toe-game.py", line 36, in Player_1_lucky
if number%2 != 0:
TypeError: not all arguments converted during string formatting
正如保罗·斯卡丁所指出的那样。问题是数字中的值会随着游戏的进行而改变。一个简单的解决方法是添加一个名为turns的附加参数,并使用它跟踪玩家的转弯
import random
from IPython.display import clear_output
#tries = 1
turns = range(10)
board = ["","","","","","","","","",""]
player_one = ('X')
player_two = ('O')
def display_board(board):
print(' | | ')
print(' ',board[7],' | ',board[8],' | ',board[9])
print(' | | ')
print('----------------')
print(' | | ')
print(' ',board[4],' | ',board[5],' | ',board[6])
print(' | | ')
print('----------------')
print(' | | ')
print(' ',board[1],' | ',board[2],' | ',board[3])
print(' | | ')
def player_input():
players_rand = 0 #random.randint(0,1)
for number in turns:
if number == 0:
print('Welcome to Tic Tac Toe!')
else:
if players_rand == 0:
def Player_1_lucky():
print "===================="
print(number)
print "===================="
if number%2 != 0:
#def Player_1_turn():
answer1 = int(input('Player 1, assign the marker: X, to the board using a number from 1 to 9: '))
#answer_convert1 = int(answer1)
if answer1 == 1:
board[1] = ('X')
display_board(board)
#elif board[1] == ('X'):
#print('You cannot use this place because it is already taken. Please pick another number.')
#Player_1_turn()
if answer1 == 2:
board[2] = ('X')
display_board(board)
if answer1 == 3:
board[3] = ('X')
display_board(board)
if answer1 == 4:
board[4] = ('X')
display_board(board)
if answer1 == 5:
board[5] = ('X')
display_board(board)
if answer1 == 6:
board[6] = ('X')
display_board(board)
if answer1 == 7:
board[7] = ('X')
display_board(board)
if answer1 == 8:
board[8] = ('X')
display_board(board)
if answer1 == 9:
board[9] = ('X')
display_board(board)
#Player_1_turn()
elif number%2 == 0:
def Player_2_turn():
answer2 = int(input('Player 2, assign the marker: O, to the board using a number from 1 to 9: '))
#answer_convert2 = int(answer2)
if answer2 == 1 and board[1] == ('X'):
#board[1] = ('X')
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 1:
board[1] = ('O')
display_board(board)
if answer2 == 2 and board[2] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 2:
board[2] = ('O')
display_board(board)
if answer2 == 3 and board[3] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 3:
board[3] = ('O')
display_board(board)
if answer2 == 4 and board[4] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 4:
board[4] = ('O')
display_board(board)
if answer2 == 5 and board[5] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 5:
board[5] = ('O')
display_board(board)
if answer2 == 6 and board[6] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 6:
board[6] = ('O')
display_board(board)
if answer2 == 7 and board[7] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 7:
board[7] = ('O')
display_board(board)
if answer2 == 8 and board[8] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 8:
board[8] = ('O')
display_board(board)
if answer2 == 9 and board[9] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 9:
board[9] = ('O')
display_board(board)
Player_2_turn()
Player_1_lucky()
if players_rand == 1:
if number%2 != board[0]:
answer2 = input('Play er 2, assign the marker: O, to the board using a number from 1 to 9: ')
answer_convert2 = int(answer2)
else:
answer1 = input('Player 1, assign the marker: X, to the board using a number from 1 to 9: ')
answer_convert1 = int(answer1)
display_board(board)
player_input()
正如保罗·斯卡丁所指出的那样。问题是数字中的值会随着游戏的进行而改变。一个简单的解决方法是添加一个名为turns的附加参数,并使用它跟踪玩家的转弯
import random
from IPython.display import clear_output
#tries = 1
turns = range(10)
board = ["","","","","","","","","",""]
player_one = ('X')
player_two = ('O')
def display_board(board):
print(' | | ')
print(' ',board[7],' | ',board[8],' | ',board[9])
print(' | | ')
print('----------------')
print(' | | ')
print(' ',board[4],' | ',board[5],' | ',board[6])
print(' | | ')
print('----------------')
print(' | | ')
print(' ',board[1],' | ',board[2],' | ',board[3])
print(' | | ')
def player_input():
players_rand = 0 #random.randint(0,1)
for number in turns:
if number == 0:
print('Welcome to Tic Tac Toe!')
else:
if players_rand == 0:
def Player_1_lucky():
print "===================="
print(number)
print "===================="
if number%2 != 0:
#def Player_1_turn():
answer1 = int(input('Player 1, assign the marker: X, to the board using a number from 1 to 9: '))
#answer_convert1 = int(answer1)
if answer1 == 1:
board[1] = ('X')
display_board(board)
#elif board[1] == ('X'):
#print('You cannot use this place because it is already taken. Please pick another number.')
#Player_1_turn()
if answer1 == 2:
board[2] = ('X')
display_board(board)
if answer1 == 3:
board[3] = ('X')
display_board(board)
if answer1 == 4:
board[4] = ('X')
display_board(board)
if answer1 == 5:
board[5] = ('X')
display_board(board)
if answer1 == 6:
board[6] = ('X')
display_board(board)
if answer1 == 7:
board[7] = ('X')
display_board(board)
if answer1 == 8:
board[8] = ('X')
display_board(board)
if answer1 == 9:
board[9] = ('X')
display_board(board)
#Player_1_turn()
elif number%2 == 0:
def Player_2_turn():
answer2 = int(input('Player 2, assign the marker: O, to the board using a number from 1 to 9: '))
#answer_convert2 = int(answer2)
if answer2 == 1 and board[1] == ('X'):
#board[1] = ('X')
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 1:
board[1] = ('O')
display_board(board)
if answer2 == 2 and board[2] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 2:
board[2] = ('O')
display_board(board)
if answer2 == 3 and board[3] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 3:
board[3] = ('O')
display_board(board)
if answer2 == 4 and board[4] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 4:
board[4] = ('O')
display_board(board)
if answer2 == 5 and board[5] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 5:
board[5] = ('O')
display_board(board)
if answer2 == 6 and board[6] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 6:
board[6] = ('O')
display_board(board)
if answer2 == 7 and board[7] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 7:
board[7] = ('O')
display_board(board)
if answer2 == 8 and board[8] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 8:
board[8] = ('O')
display_board(board)
if answer2 == 9 and board[9] == ('X'):
print('You cannot use this place because it is already taken. Please pick another number.')
Player_2_turn()
elif answer2 == 9:
board[9] = ('O')
display_board(board)
Player_2_turn()
Player_1_lucky()
if players_rand == 1:
if number%2 != board[0]:
answer2 = input('Play er 2, assign the marker: O, to the board using a number from 1 to 9: ')
answer_convert2 = int(answer2)
else:
answer1 = input('Player 1, assign the marker: X, to the board using a number from 1 to 9: ')
answer_convert1 = int(answer1)
display_board(board)
player_input()
在这些方面:
answer2 = int(input('Player 2, assign the marker: O, to the board using a number from 1 to 9: '))
#answer_convert2 = int(answer2)
answer2 = input('Player 2, assign the marker: O, to the board using a number from 1 to 9: ')
answer_convert2 = int(answer2)
代码正确地将用户的输入从字符串转换为int。但下面的几行:
answer2 = int(input('Player 2, assign the marker: O, to the board using a number from 1 to 9: '))
#answer_convert2 = int(answer2)
answer2 = input('Player 2, assign the marker: O, to the board using a number from 1 to 9: ')
answer_convert2 = int(answer2)
代码以字符串形式离开answer2
。这意味着这一行:
if number % 2 != 0:
有时执行您期望的模运算并测试奇数(当它是整数时),有时尝试执行字符串插值(当它是字符串时)。在这些行中:
answer2 = int(input('Player 2, assign the marker: O, to the board using a number from 1 to 9: '))
#answer_convert2 = int(answer2)
answer2 = input('Player 2, assign the marker: O, to the board using a number from 1 to 9: ')
answer_convert2 = int(answer2)
代码正确地将用户的输入从字符串转换为int。但下面的几行:
answer2 = int(input('Player 2, assign the marker: O, to the board using a number from 1 to 9: '))
#answer_convert2 = int(answer2)
answer2 = input('Player 2, assign the marker: O, to the board using a number from 1 to 9: ')
answer_convert2 = int(answer2)
代码以字符串形式离开answer2
。这意味着这一行:
if number % 2 != 0:
有时执行您期望的模运算并测试异常(当它是整数时),有时尝试执行字符串插值(当它是字符串时)。非常感谢大家的反馈。由于你的帮助,我发现当数字被替换为字符串时,棋盘上的字符串,在游戏进行过程中,for循环无法正常工作,因为它依赖于数字来决定轮到哪个玩家。我提出的解决方案涉及到你们两人的解决方案 非常感谢你们的反馈。由于你的帮助,我发现当数字被替换为字符串时,棋盘上的字符串,在游戏进行过程中,for循环无法正常工作,因为它依赖于数字来决定轮到哪个玩家。我提出的解决方案涉及到你们两人的解决方案 我猜那个数字包含一个字符串。如果编号%2!=0:用于
如果int(number)%2!=0:
我猜这个数字包含一个字符串。如果编号%2!=0:用于如果int(number)%2!=0: