Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除ValueError未跳闸Python 3.4外_Python_Exception_Python 3.4 - Fatal编程技术网

除ValueError未跳闸Python 3.4外

除ValueError未跳闸Python 3.4外,python,exception,python-3.4,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 selec

好的,我试图从根本上防止有人在字段中键入字符串值:

#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")
#用户选择
打印(“您希望运行哪个程序?”)
打印((如果要退出菜单,请键入“9”)
selection=int(输入())
打印()
#安全声明后接案例声明
选择=10时:
尝试:
打印(“这是无效的选择,请输入正确的选择。”)
打印(“您希望运行哪个程序?”)
selection=int(输入())
打印()
除值错误外:
打印(“Cmon man”)
简单明了,它没有运行。我尝试过重新组织一切,但没有找到一个合适的解决方案。我已经找了差不多一个小时了。对这个问题没有帮助。有善良的灵魂吗

顺便说一句,忽略case语句部分,它甚至还没有写出来

顺便说一句,继续得到通常的“字符串不是数字”回答

(“ValueError:以10为基数的int()的文本无效:“为什么”)


p.p.S.问题已经指出。我显然是愚蠢的健忘lol。。。谢谢您的帮助。

您的
尝试一下……但
没有涵盖初始用户输入,因此
值错误实际上没有被捕获。
如果输入的
int
超出定义的边界(0>=x>=10)作为第一个输入,则可以看到
try…除了
块工作之外

您需要重构代码,以便第一个输入请求位于try块和循环中,或者将现有的输入请求包装在另一个
try…中,但
除外

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

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

您意识到用于验证选择的try-except块仅在第二个
input
语句附近,不是吗?也就是说:如果你在第一次输入时回答了一个非数字,程序将在那里中断。有没有关于如何最好地实现try的建议…除了开头的表单?我想保持现状。我一直试图搞砸一次尝试…除了第一次请求输入,但似乎比我预期的要糟得多。我可能会将所有内容重构到一个while循环(
while True:
)中,并在有效输入时中断。如果输入无效,请打印错误并再次循环到起始位置。如果你不知道该怎么做,我可以在一个例子中编辑我的答案。我可以重写它,我只是真的不希望。现在处理这样的事情已经太晚了,哈哈。星期天晚上为了星期一早上的最后期限而临时抱佛脚=0p这些我记得太清楚了。祝你好运!