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

Python如何限制用户输入仅为指定运算符字符,实现计算器输入校验

计算器代码问题修正说明

你的代码核心错误在于运算符合法性校验的逻辑写法不符合Python语法规则:
if sign != "-" "+" "/" "x" "^": 这行代码中,Python会自动将相邻的字符串字面量拼接为完整字符串"-+/x^",实际判断逻辑变成了「如果输入的运算符不等于"-+/x^"这一整个长字符串就返回Invalid」,完全无法实现你要的校验5个单独运算符的需求。

修正方案

将运算符校验行替换为判断输入是否在允许的运算符集合内即可:

if sign not in {"-", "+", "/", "x", "^"}:

完整可运行的修正后代码

try:
    number_1 = float(input("Insert number 1 here: "))
    # input本身返回字符串,无需额外str()转换
    sign = input("+ - / x ^: ")
    number_2 = float(input("Insert number 2 here: "))
except ValueError:
    print("Invalid")
    exit()
# 修正后的运算符校验逻辑
if sign not in {"-", "+", "/", "x", "^"}:
    print("Invalid")
    exit()
elif sign == "-":
    print(number_1 - number_2)
elif sign == "+":
    print(number_2 + number_1)
elif sign == "/":
    if number_2 == 0:
        print("Invalid")
        exit()
    print(number_1 / number_2)
elif sign == "x":
    print(number_1 * number_2)
elif sign == "^":
    print(number_1 ** number_2)
else:
    print("Invalid")

可选优化点

  • 可以给运算符前后加去空格处理,避免用户不小心输入空格导致校验失败,比如sign = input("+ - / x ^: ").strip()
  • 可以统一将运算符转为小写,避免用户输入大写X导致校验失败,比如sign = input("+ - / x ^: ").strip().lower()
  • 若需要全中文交互,直接修改input内的提示文字即可,比如改为请输入第一个数字:、请输入运算符(支持+ - / x ^):、请输入第二个数字:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:42:03