我正在尝试检查在输入函数中输入的内容是否都是字母字符。基本上我想确保不输入数字。但是,当我键入一个如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()
答案 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()