这个函数有问题吗?

2024-05-19 16:26:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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。这很有趣,但我需要帮助。有什么想法吗?你知道吗


Tags: 函数fromimportboard游戏inputdefipython
3条回答

实际上,我猜如果你真的想检查输入是否是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循环。但我想如果你现在只想练习,那就尽情享受吧:)

我不太清楚为什么要使用while循环。我相信你想问if move1 in range(1, 10)(顺便说一下,不需要写范围(0,10,1),因为step在默认情况下是1,而且tic-tac-toe board从1变为9,而不是从0变为范围(1,10))。这就像说“如果move1不是1到9之间的数字,那么请求输入”。我想你的意思也是if move1 == ''。还有一个小问题,就是输入是字符串。。。所以它们不能与范围内的数字相比较。i、 e.“3”!= 3. 你知道吗

要轻松地改变这一点,只需执行int(input(".. whatever you ask for ..")),将字符串转换为整数。你知道吗

只是一个旁注,但是当你写move1 = ''的时候,我知道你用的是空字符串,因为你没有任何东西,但是你也可以用move1 = None。然后你也可以说if not move1:(“None”是假的,所以这就像说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之间的数字?你知道吗

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

当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还是很有趣的!你知道吗

我想你可以试试这个

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)

相关问题 更多 >