将其放入while循环中,并在获得所需输入时中断。这也可能是最好把所有的代码依赖
imp于
try如下,或设置默认值,以防止
NameError的进一步下跌。
while True: try: imp = int(input("importance:nt1: Highnt2: Normalnt3: Low")) # ... Do stuff dependant on "imp" break # only triggered if input is valid... except ValueError: print("Error: Invalid number")编辑 :user2678074提出的有效点,这可能会使调试变得困难,因为它可能陷入无限循环。
我将提出两个建议来解决此问题-
首先使用具有定义的重试次数的for循环。其次,将以上内容放置在一个函数中,以使其与其余应用程序逻辑保持独立,并且将错误隔离在该函数的范围内:
def safeIntegerInput( num_retries = 3 ): for attempt_no in range(num_retries): try: return int(input("importance:nt1: Highnt2: Normalnt3: Low")) except ValueError as error: if attempt_no < (num_retries - 1): print("Error: Invalid number") else: raise error有了它,您可以在函数调用之外进行try / except,并且只有在超过最大重试次数后才能通过。



