Python输入校验问题:非数字输入致程序崩溃如何解决?
解决Python输入非数字导致程序崩溃的问题
原代码的问题在于,当输入无法转换为数字时(比如空值、字符串),int(float(input(x)))会抛出ValueError,程序直接崩溃,没有处理这种异常的逻辑。要实现输入非法时重新询问,需要结合异常捕获和循环验证。
修改后的代码
def ask_valid_number(prompt): while True: try: # 尝试将输入转换为整数 num = int(input(prompt)) # 检查范围是否在0-5之间 if 0 <= num <=5: return num else: print("输入超出范围,请输入0到5之间的数字") except ValueError: # 捕获无法转换为数字的异常 print("输入无效,请输入有效的数字") def main(): x = ask_valid_number("请输入0到5之间的数字:") print(f"你输入的合法数字是:{x}") main()
关键说明
- 使用
while True创建无限循环,直到得到合法输入才返回 try-except块捕获ValueError:当输入无法转换为整数时触发,提示用户重新输入- 先验证输入是否为有效整数,再检查范围是否符合要求,两种非法情况都能触发重新询问
- 把输入提示、类型验证、范围检查整合到一个函数里,逻辑更集中
补充说明
如果需要支持浮点数输入(比如输入2.5也合法),只需要把int(input(prompt))改成float(input(prompt)),范围检查保持0 <= num <=5即可:
def ask_valid_number(prompt): while True: try: num = float(input(prompt)) if 0 <= num <=5: return num else: print("输入超出范围,请输入0到5之间的数字") except ValueError: print("输入无效,请输入有效的数字")
内容的提问来源于stack exchange,提问作者raposo
相关产品推荐
相关产品推荐

