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

基础计算器代码第8行未按预期工作,原因是什么?

运算符输入验证问题

问题代码

while Operator != "+" and "-" and "*" and "^" and "/" and "/+" and "v-":
    Operator = input("Please write an operator (+, -, *, ^, /, /+, v-): ")

问题情况

原本想实现:输入内容不在指定运算符(+, -, *, ^, /, /+, v-)里时,就让用户重新输入。但实际只有输入+时程序能正常停止,输入-、*这些其他合法运算符时,程序还是一直让重新输入。试过把and改成or、改用while not Operator ==的写法都没用,也找不到.isoperator这种方法。

简单解决方案

核心是你写的判断逻辑不符合Python的语法规则,直接用in和列表来判断最省事,适合刚学的新手:

修改后的代码:

# 把所有合法运算符放进一个列表里
valid_ops = ["+", "-", "*", "^", "/", "/+", "v-"]
# 先给变量赋个空值,保证第一次循环能执行
operator = ""
# 只要输入的内容不在合法列表里,就一直让用户输入
while operator not in valid_ops:
    operator = input("Please write an operator (+, -, *, ^, /, /+, v-): ")

原代码出错原因

原来的while Operator != "+" and "-" and "*"...逻辑完全不对,Python会把它拆成多个独立判断:

  • 先看Operator != "+"是不是真的
  • 然后看"-"这个字符串本身,非空字符串在Python里会被当成True
  • 后面的"*"、"^"等也都是True

所以只有当输入+时,Operator != "+"是False,整个判断结果是False,循环才会停;输入其他任何值,Operator != "+"是True,加上后面全是True,整个判断结果就是True,循环就一直跑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:13:16