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

Python猜数字代码触发ValueError,如何获取合法用户输入?

问题分析与解决方法

为啥代码会报错?

你的代码存在两个问题:

  1. 缺少random模块导入:第一行调用random.randint()但未添加import random语句,运行时会先触发NameError;而你当前遇到的ValueError,是第二个问题导致的。
  2. 未处理非法输入:当用户输入空字符串、字母、小数或符号时,int(input(...))无法将这些内容转换为十进制整数,直接抛出ValueError。从你给出的错误信息来看,用户大概率是直接按了回车,输入了空内容,自然无法转成整数。

怎么获取合法的用户输入?

解决问题需要两步:

  • 补上random模块的导入;
  • 通过循环+异常捕获,反复提示用户输入,直到得到符合要求的整数。

修改后的代码如下:

import random

num = random.randint(1, 5)
while True:
    try:
        user_number = int(input("Enter the Number: "))
        # 额外增加范围校验,确保输入在游戏设定的1-5区间内
        if 1 <= user_number <= 5:
            break
        else:
            print("请输入1到5之间的数字!")
    except ValueError:
        print("输入无效,请输入一个整数!")

if user_number == num:
    print("Correct !")
else:
    print("Incorrect !")
    print(f"The correct number is {num}")

代码说明:

  • import random:补上模块导入,避免触发NameError;
  • while True循环:持续请求用户输入,直到拿到合法值;
  • try-except块:捕获输入转整数时的ValueError,及时提示用户重新输入;
  • 范围校验:确保用户输入的数字符合游戏规则,让逻辑更严谨。

内容的提问来源于stack exchange,提问作者Rai Ujwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.05 12:12:31