Python 这个函数有问题吗?

Python 这个函数有问题吗?,python,python-3.x,tic-tac-toe,Python,Python 3.x,Tic Tac Toe,我是python新手。开始做一个井字游戏 我已经印了一块板,所以这不是问题所在。我的函数播放序列发生了一些奇怪的事情 from IPython.display import clear_output def display_board(board): print(board[7]+ '|'+board[8]+ '|' +board[9]) print('----') print(board[4]+ '|'+board[5]+ '|' +board[6])

我是python新手。开始做一个井字游戏

我已经印了一块板,所以这不是问题所在。我的函数播放序列发生了一些奇怪的事情

from IPython.display import clear_output

def display_board(board):
    print(board[7]+  '|'+board[8]+  '|' +board[9])
    print('----')
    print(board[4]+  '|'+board[5]+  '|' +board[6])
    print('----')
    print(board[1]+  '|'+board[2]+  '|' +board[3])

def play_sequence():
    move1 = ''

    while move1 != range(0,10,1):
        move1 = input("Player 1, choose a number:")
        break

    while move1 == input(move1):
        print("You chose 1")

我希望玩家选择一个数字,它应该返回您选择的1,然后是板上有1的板[1]。取而代之的是,我输入了1,然后在一个框前面出现了一个新行,其中有一个1,用于输入另一个输入。有什么想法吗?然后我再加上一个1,然后显示“11”。这很有趣,但我需要帮助。有什么想法吗?

我不太清楚为什么要使用while循环。我相信您想问
是否在范围(1,10)内移动1
(顺便说一句,不需要写入范围(0,10,1),因为默认情况下步长为1,而且您的tic tac趾板从1移动到9,而不是从0移动到范围(1,10))。这就像说“如果move1不是介于1和9之间的数字,那么请求输入”。我想你的意思也是如果move1=''。这也有一个小问题,就是输入是字符串。。。因此,它们无法与范围内的数字进行比较。i、 e.‘3’!=三,

要轻松地改变这一点,您只需执行
int(输入(“…您要求的任何内容”)
即可将字符串转换为整数

只是一个旁注,但当您编写
move1=''
时,我知道您使用的是空字符串,因为您没有任何内容,但您也可以使用
move1=None
。然后你也可以说
if not move1:
(“None”是False,所以这就像说if not False,即if True)

到目前为止,您已经:

def play_sequence():
    move1 = None

    if not move1:
        move1 = int(input("Player 1, choose a number:"))
而且,你可以通过简单地说

    def play_sequence():
        move1 = int(input("Player 1, choose a number:"))
因为不管怎样,当你打算改变它时,移动没有多大意义。除非我不太明白你为什么使用while循环。。。我猜您想检查输入是否为1-9之间的数字

不管怎样,你发现奇怪的“1”的问题源于:

当move1==输入(move1)时: 打印(“您选择了1”)

在这里,您使用input(),并且无论何时使用input(),您实际上都会请求输入。这就是为什么你一次又一次地投1。例如,如果写入2或其他数字,则while循环停止。实际上我不太清楚你在这里做什么,但我想你想说的是:

print("You chose", move1)
这将打印在函数的第一部分中选择的数字

因此:

def play_sequence():
    move1 = None

    if not move1:
        move1 = int(input("Player 1, choose a number:"))

    print("You chose", move1)

我希望我在帮你,我没有把你弄糊涂……:)尽管如此,还是要享受学习python的乐趣

事实上,我猜如果你真的想检查输入是否是一个介于1和9之间的数字,你可以加上这个

def play_sequence():
    move1 = int(input("Player 1, choose a number:"))

    # checking
    while move1 not in range(1, 10):
        move1 = int(input("Player 1, the number must be between 1 and 9"))

    print("You chose", move1)

最后一点-我想知道你是否要做一个超长的函数来重复播放序列。。。i、 你打算把move2,move3。。。。?我认为最好使用一个大的while循环。但我想,如果你现在只想练习,那就尽情享受吧:)

我想你可以试试这个

def play_sequence():
    while True:
        move = int(input("Player 1, choose a number:"))
        if move not in range(0, 10, 1):
            break
        print("Your choice is", move)

您的意思是
移动1不在范围(0,10,1)
?现在,您正在将一个数字(字符串)与整个范围进行比较。此外,还需要使用
int
将输入的字符串数字转换为实际数字。将字符串与数字进行比较总是错误的。
move1=None
后跟
if not move1
是毫无意义的。是的,但我认为这就是Airmastix对
move1=''
的意思,所以我试着让它接近原始代码…)谢谢它现在可以工作了。现在我需要在1所在的位置用x打印电路板