Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获得;TypeError:并非所有参数都在字符串格式化过程中转换";,不太清楚为什么_Python - Fatal编程技术网

Python 获得;TypeError:并非所有参数都在字符串格式化过程中转换";,不太清楚为什么

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

我正在为我的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>
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: