如何重复试块

我在Python3.3中有一个try-except块,我希望它无限期地运行

尝试:
imp=int(输入(“重要性:\n\t1:High\n\t2:Normal\n\t3:Low”))
除值错误外:
imp=int(输入(“请输入一个介于1和3之间的数字:\n>”)

目前,如果用户输入一个非整数,它将按计划工作,但是如果他们再次输入,它将再次引发ValueError并崩溃

解决这个问题的最佳方法是什么

将其放入while循环中,并在获得所需输入时中断。最好保持所有代码依赖于try中的imp,如下所示,或者为其设置一个默认值以防止namererror

为True时:
尝试:
imp=int(输入(“重要性:\n\t1:High\n\t2:Normal\n\t3:Low”))
#…靠“小鬼”做事
中断#仅在输入有效时触发。。。
除值错误外:
打印(“错误:无效数字”)

编辑:user2678074指出,这可能会使调试变得困难,因为它可能陷入无限循环

我想提出两个建议来解决这个问题-首先使用一个具有定义重试次数的for循环。其次,将上述内容放在一个函数中,使其与应用程序逻辑的其余部分分开,并在该函数的范围内隔离错误:

def safeIntegerInput(num\u retries=3):
对于范围内的尝试次数(重试次数):
尝试:
返回int(输入(“重要性:\n\t1:High\n\t2:Normal\n\t3:Low”))
除ValueError作为错误外:
如果尝试次数\u否<(重试次数-1):
打印(“错误:无效数字”)
其他:
提出错误

有了它,您就可以在函数调用之外进行try/except,并且只有当您超过最大重试次数时,它才会通过

发表评论