该功能有问题吗?

时间:2019-01-06 01:57:59

标签: python python-3.x tic-tac-toe

我是python的新手。开始制作井字游戏。

我已经印制板了,所以这不是问题。我的函数play_sequence发生了一些奇怪的事情。

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

3 个答案:

答案 0 :(得分:1)

我想你可以试试

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 :(得分:-1)

我不太清楚为什么要使用while循环。我相信您想问if move1 in range(1, 10)(顺便说一句,无需写range(0,10,1),因为step在默认情况下是1,而且井字牌从 1 而不是 0 到9,因此是范围(1,10))。这就像说“如果move1不是1到9之间的数字,则要求输入”。我认为您的意思也是if move1 == ''。这样做还有一个小问题,那就是输入是字符串...因此无法真正将它们与范围内的数字进行比较。即'3'!= 3。

要轻松更改它,只需执行int(input(".. whatever you ask for .."))即可将字符串转换为整数。

只是一个旁注,但是当您编写move1 = ''时,我知道您使用空字符串是因为您什么都没有,但是您也可以使用move1 = None。然后您也可以说if not move1:(“ None”是False,所以就好像在说不是False,即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:"))

因为无论如何都要更改move1并没有多大意义。除非我不太明白为什么要使用while循环...我想您想检查输入是否为1-9之间的数字?

无论如何,您发现的奇怪的“ 1 1 1”问题源于此:

while move1 ==输入(move1):         print(“您选择了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还是很开心!

答案 2 :(得分:-1)

实际上,我猜测您是否真的要检查输入的数字是否介于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)

最后一点-我想知道您是否要使用播放序列的所有重复来制作超长函数...也就是说,您要放置move2,move3还是...?我认为最好为此使用一个大的while循环。但是我想,如果您只是想现在练习,那就快好玩吧:)