python 3:尝试除了不检查isalpha函数

时间:2016-04-10 02:01:21

标签: python python-3.x

我正在尝试检查在输入函数中输入的内容是否都是字母字符。基本上我想确保不输入数字。但是,当我键入一个如4的数字时,没有任何反应。我甚至没有看到异常错误。此外,如果我输入“拿蜂蜜”或“打开门”之外的任何东西,它都不会启动熊市功能。 Haaalp。提前致谢!

def bear_room():
    print("there's a bear here")
    print("the bear has a bunch of honey")
    print("the fat bear is front of another door")
    print("how are you going to move the bear?")

    choice = str(input("(Taunt bear, take honey, open door?: "))
    try:
        if choice.isalnum() == False:
            if choice == "take honey":
                print("the bear looks at you then slaps your face off")
            elif choice == "open door":
                print("get the hell out")
        else: 
            bear_room()
    except Exception as e:
        print(str(e))
        print("numbers are not accepted")
        bear_room()

bear_room()

2 个答案:

答案 0 :(得分:0)

没有什么可以触发异常,因为代码方式输入数字是完全合法的。它将检查choice.isalnum(),对于一个数字它将为True,然后将递归调用bear_room()。你希望else部分包含你在异常中得到的打印,然后摆脱异常处理程序。

答案 1 :(得分:0)

这里有一些问题。

首先,不要将您的输入投射到str。它已经从input以字符串形式出现。

其次,你永远不会因为你想要捕获你想要捕获的异常而引发异常,因为你的输入在try / except之外。不仅如此,如果您输入abcd1234之类的内容,也不会引发异常。那仍然是一个有效的字符串。

你有奖金问题。永远不要开放Exception。始终明确表示您希望捕获的异常类型。但是,除此之外,您不需要尝试/尝试。相反,只需检查您是否有有效的条目并继续您的逻辑。

只需删除您的try / except甚至是isalnum支票,然后检查输入的字符串是否与您要查找的字符串相符。如果没有,请输出某种错误消息:

def bear_room():
    print("there's a bear here")
    print("the bear has a bunch of honey")
    print("the fat bear is front of another door")
    print("how are you going to move the bear?")

    choice = input("(Taunt bear, take honey, open door?: ")
    if choice == "take honey":
        print("the bear looks at you then slaps your face off")
    elif choice == "open door":
        print("get the hell out")
    else:
        print("Invalid entry")
        bear_room()

bear_room()