You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:14:54