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

如何在Python中区分负数与非数字输入?

问题根源

你的代码里用了isdigit()方法判断输入是否为数字,但这个方法只认不带负号的纯数字字符串,像"-3"这种带负号的输入会被它判定为非数字,直接走到else分支,根本没机会转成整数去判断是不是负数。

修复后的代码

换成try-except结构处理输入转换,不管是正数还是负数,只要是合法整数就能被正确识别,还能接住非数字的输入:

while True:
    user_guess = input("Guess a number: ")
    try:
        user_guess = int(user_guess)
        if user_guess < 0:
            print("Too low, guess a number between 0 and 10.")
        elif user_guess > 10:
            print("Too high, guess a number between 0 and 10.")
        else:
            # 这里可以添加猜对后的逻辑,比如结束循环
            print("That's a valid guess!")
            break
    except ValueError:
        print("It is not a number.")
        break
补充说明
  • try-except是处理用户输入的更可靠方式,比isdigit()覆盖的场景多,正负整数、零都能处理。
  • 把原来的两个独立if改成elif和else,逻辑更严谨——之前的代码如果输入0-10之间的数,不会有任何输出,现在会给出有效提示,也避免了多个条件同时触发的问题。

内容的提问来源于stack exchange,提问作者Boris Vian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:40:43