Python 3验证循环使用定义重新启动

问题描述 投票:0回答:1

我已经创建了一个简单的菜单,用户可以在其中输入怪物选择或完全相同的单词。如果接收到错误的输入,我希望程序循环返回。当我输入第一个错误答案时,我会得到提示重新输入的提示,但不会随后打印出该语句。因此,它不是正确的循环。

def welcomeScreen():
    print("Welcome to the Creature computation tool!\n\n")
    menu = str("MENU")
    print(menu.center(40, '*'))

def monsterMenu(monster): 

    print("{0} - Compute probability of {0}".format(monster))

def quitMenu():
    endMenu = str("Quit")
    print("{0} - Quit the tool".format(endMenu))

def chooseMontser():
    pickedMonster = input("Please Enter your choice of Monster: ")
    if pickedMonster == "Yeti":
        print ("You have picked", pickedMonster)
    elif pickedMonster == "Dragon":
        print ("You have picked", pickedMonster)
    elif pickedMonster == "Hydra":
        print ("You have picked", pickedMonster)
    elif pickedMonster == "Quit":
        print ("Thanks for using Creature Menu!")
    else:
        print("Please choose a valid option")
        chooseMonster()

def creatureMenu():
    welcomeScreen()
    monsterMenu("Yeti")
    monsterMenu("Dragon")
    monsterMenu("Hydra")
    quitMenu()
    chooseMontser()

creatureMenu()
python-3.x
1个回答
0
投票

请勿从内部调用函数,而应使用循环:

def chooseMontser():
    # loop until a valid input was given
    while True:
        pickedMonster = input("Please Enter your choice of Monster: ")
        if pickedMonster in ("Yeti","Dragon", "Hydra", "Quit"):
            break
        print("Please choose a valid option")

    if pickedMonster == "Yeti":
        print ("You have picked", pickedMonster)
    elif pickedMonster == "Dragon":
        print ("You have picked", pickedMonster)
    elif pickedMonster == "Hydra":
        print ("You have picked", pickedMonster)
    elif pickedMonster == "Quit":
        print ("Thanks for using Creature Menu!")
© www.soinside.com 2019 - 2024. All rights reserved.