当前位置: 首页 > 知识库问答 >
问题:

在两个级别输入有效值之前,如何继续请求输入?

梁嘉祥
2023-03-14

我正在做一个问题,其中我为拼字游戏创建了各种功能。首先,我想让用户输入nre开始新游戏/重放最后一手牌/结束游戏。

一旦游戏开始,我想让用户输入uc来让用户或计算机玩。

我陷入了问题的最后一部分。

我的代码:

hand = None
while True:
    choice = input('Enter n to deal a new hand, r to replay the last hand, or e to end game: ').lower()
    if choice == 'e':
        break
    
    elif choice=='n':
        Your_choice = input('Enter u to play yourself or c to let the computer play: ')
        
        if Your_choice == 'u':
                hand = dealHand(HAND_SIZE)
                playHand(hand, wordList, HAND_SIZE)
        elif Your_choice == 'c':
                hand = dealHand(HAND_SIZE)
                compPlayHand(hand, wordList,HAND_SIZE)
        else:
                print('Invalid command.')
                
    elif choice == 'r':
        if hand == None:
            print('You have not played a hand yet. Please play a new hand first!')
        else:
            Your_choice = input('Enter u to play yourself or c to let the computer play: ')
            
            if Your_choice == 'u':
                if hand != None:
                    playHand(hand.copy(), wordList, HAND_SIZE)
                else:
                    print('You have not played a hand yet. Please play a new hand first!')
            elif Your_choice == 'c':
                if hand != None:
                    compPlayHand(hand.copy(), wordList, HAND_SIZE)
                else:
                    print('You have not played a hand yet. Please play a new hand first!')
            else:
                print('Invalid command.')
    else:
            print('Invalid command.')

如果内部循环的选择不是u或c,它应该反复通知并询问,直到u或c是输入。但它是在初审后从那个循环中出来的。

理想输出:

Enter n to deal a new hand, r to replay the last hand, or e to end game: n
Enter u to have yourself play, c to have the computer play: x
Invalid command.

Enter u to have yourself play, c to have the computer play: y
Invalid command.

Enter u to have yourself play, c to have the computer play: z
Invalid command.

Enter u to have yourself play, c to have the computer play: k
Invalid command.

我的输出:

Enter n to deal a new hand, r to replay the last hand, or e to end game: n

Enter u to play yourself or c to let the computer play: x

Invalid command.

Enter n to deal a new hand, r to replay the last hand, or e to end game: y

Invalid command.

问题是,当用户在第二级输入无效命令时,我的代码开始询问第一级的问题。

共有1个答案

幸经艺
2023-03-14

您需要的是python中的break语句,它停止最内部的循环,您可以使用该语句执行以下操作:

while:
    Your_choice = input('Enter u to play yourself or c to let the computer play: ')
    if Your_choice in ["u", "c"]:
        # Do stuff
        break
    else:
        print("Incorrect option")

文档中的更多信息:https://docs.python.org/3/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops

 类似资料:
  • 我希望“请输入一个带有字母S的句子”循环,直到用户输入字母“S”

  • 我正在写一个叫做hangman.py的程序。在我的程序中,用户不能在我的输入中输入“?”或空白。例如,用户不能输入“?xx?xx?”或“我该怎么做”。但用户可以输入诸如“ldkdjgg”或“stop-go”之类的内容。如果用户输入诸如“?xxxxx”或“我该怎么做”之类的内容,我必须不断询问用户请输入一个不包含的要猜测的单词?或空白:“.我的问题是如何打印”请输入一个不包含字符的要猜测的单词?或空

  • 我已经看了这个程序几个小时了,但我仍然不明白其中的逻辑。程序要求用户输入整数。 一旦用户输入了整数,它将向用户输出所有的正数、负数和输入的总数,以及这些数字的平均值。 这是我陷入困境的地方: 然后它会询问用户是否要继续。用户将输入或以指示他们是否要继续。如果用户输入“y”,循环将再次进行,如果他们输入“n”,它将显示再见消息。我不知道如何设置。 我已经尝试了一个 do while 循环,我目前正在

  • 我试图用C语言编写一个简单的程序,它需要一个字符串,并根据输入执行一个动作。但是,如果用户输入一个无效的字符串,我希望程序再次要求用户输入,直到用户提供一个有效的输入字符串。 示例输出: 我有一个这样的计划: 这个程序似乎工作;然而,我有一个经验丰富的C开发人员告诉我永远不要使用fflush(stdin)。 这是我到目前为止所拥有的: 但是,当运行此方法时,在接受输入后,程序将继续打印: 等等我很

  • 因此,我是Java新手,正在尝试将一个变量从扫描器传递到getter/setter方法,以便根据输入的数字对数组进行不同的排序。 我把它放在列表排序的地方;问题是我的扫描仪重复了你必须在列表出现之前多次输入你的选择。 我知道这个问题与调用“int c=assign_6.choice()”有关。如果我硬编码一个数字,它没问题,但它似乎正在多次调用select()函数。 我尝试过将函数移出main,删

  • 这是我为CS类制作的文本冒险游戏的一小部分。你正在探索一座房子,你通过告诉游戏你想去北、南、东还是西来导航它 因此,我想添加一些内容,以便在输入无效输入时告诉您,如果您说拼写错误的单词,如Nroth、Suoth、Eas或Weast。这些只是例子,但希望你们知道我的意思,只要它不完全匹配北,南,东或西。在这段代码中,我将如何做到这一点? 我举了一个错误的例子,如果你在写“elif room==”的地