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
相关产品推荐
相关产品推荐

