除了ValueError没有绊倒Python 3.4

时间:2014-04-28 03:47:40

标签: python exception python-3.4

好吧,所以我试图基本上阻止有人在字段中键入字符串值:

#User selection
print("Which program would you like to run?")
print("(Type '9' if you wish to exit the menu)")
selection = int(input())
print()

#Security statement followed by case statement
while selection <= 0 or selection >= 10:
    try:
        print("That is an invalid selection, please input a proper selection.")
        print("Which program would you like to run?")
        selection = int(input())
        print()
    except ValueError:
        print("Cmon man")

简单明了,它没有运行。我试过重组一切,但我还没有找到合适的解决方案。现在已经四处看了好几个小时。这个问题没有帮助。任何善良的灵魂?

忽略案例陈述部分顺便说一句,甚至还没写完。

P.S。只是保持平常&#34;字符串不是一个durr&#34;响应

(&#34; ValueError:基数为10的int()的无效文字:&#39;为什么&#39;&#34;)

P.P.S。问题已经指出。我显然是愚蠢地忘记了lol ...感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您的try...except并未涵盖初始用户输入,因此ValueError实际上并未被捕获。 如果您在定义的边界(0&gt; = x&gt; = 10)之外输入int作为第一个输入,那么您可以看到try...except块工作。

您需要重构代码,以便第一个输入请求位于try块和循环内,或者将现有输入请求包装在另一个try...except中。

另外,作为旁注,input()可以采用字符串参数,该参数将作为提示显示给用户。

selection = int(input("Which program would you like to run? "))