如何在Python异常处理程序中,未得到预期结果时最多3次尝试后退出程序?
实现带重试次数限制的Python输入验证
嘿,这个需求很常见,我们只需要给代码加个重试计数器就能搞定最多3次尝试的限制。下面是修改后的完整代码,我会顺便拆解下关键逻辑:
max_attempts = 3 attempts = 0 while attempts < max_attempts: attempts += 1 try: x = int(input("请输入一个数字:")) print(f"成功输入数字:{x}") break except ValueError: remaining = max_attempts - attempts if remaining > 0: print(f"您输入了非数值,请输入数值类型。您还有{remaining}次尝试机会。") else: print("尝试次数已耗尽,程序退出。") except KeyboardInterrupt: print("\n您按下了Ctrl+C,程序退出。") exit(1)
关键逻辑说明:
- 先定义
max_attempts = 3设置最大允许尝试次数,attempts用来记录已经尝试过的次数 - 循环条件改成
attempts < max_attempts,次数耗尽后自动终止循环 - 每次进入循环先执行
attempts += 1,更新当前尝试次数 - 在
ValueError的异常处理里,计算剩余尝试次数,给用户明确的提示;如果次数耗尽,直接告知用户程序退出 - 保留了原有的
KeyboardInterrupt处理,用户按Ctrl+C可以直接退出程序
这样修改后,既保留了原有的异常处理逻辑,又实现了最多3次尝试的限制,体验也更友好~
内容的提问来源于stack exchange,提问作者Craka




