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

逻辑非运算符未按预期工作:简易计算器输入校验异常

问题分析与修复方案

你的校验代码逻辑完全写错了,导致不管输入是不是数字,都会触发错误提示。

原代码的问题

原条件if not "1" or "2" or "3" or "4" or "5" or "6" or "7" or "8" or "9" or "0" in number1 or number2:的逻辑等价于(not "1") or "2" or "3" ... or ("0" in number1) or number2。因为非空字符串在布尔判断里都是True,所以"2"本身就是True,整个条件永远为True,自然每次都会执行错误提示。

正确的实现方式

方法1:检查输入是否全为数字(仅支持正整数)

直接用字符串的isdigit()方法,简洁高效:

if not (number1.isdigit() and number2.isdigit()):
    print("Error! One of the numbers is not a number!")
    quit()

方法2:手动遍历字符检查(适合理解逻辑)

如果想手动实现字符校验,要确保输入的每个字符都是0-9中的一个:

# 定义数字字符集合
digits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}

# 检查number1的每个字符
for char in number1:
    if char not in digits:
        print("Error! One of the numbers is not a number!")
        quit()

# 检查number2的每个字符
for char in number2:
    if char not in digits:
        print("Error! One of the numbers is not a number!")
        quit()

方法3:支持负数和小数(如果你的计算器需要)

如果要允许输入负数或带小数点的数字,用异常捕获的方式更可靠:

try:
    # 尝试把输入转成浮点数
    num1 = float(number1)
    num2 = float(number2)
except ValueError:
    print("Error! One of the numbers is not a number!")
    quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:42:36