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

Python 3.6中if判断报错咨询:字符串与整数无法比较

问题分析与解决方案

核心问题:Python 3 与 Python 2 input() 的行为差异

在 Python 3 中,input() 函数会直接返回用户输入的字符串,而你代码里直接拿这个字符串和整数 40 做比较(hours_Worked > 40),自然会抛出 '<' not supported between instances of 'str' and 'int' 的类型不兼容错误。

而 Python 2 的 input() 函数本质上等价于 Python 3 的 eval(input())——它会把用户输入的内容当作 Python 表达式求值,所以如果用户输入数字,会自动转换成数值类型,这就是为什么你的代码在 Python 2.7 里能正常运行的原因。

代码里的其他隐藏问题

除了类型不匹配,你的代码还有两个容易忽略的逻辑错误:

  • 加班工资计算错误:你写的 ((hours_Worked-40) + (rate*1.5)) 是把加班时长和加班时薪做加法,这明显不符合薪资计算逻辑,应该是加班时长 × 加班时薪,也就是 (hours_Worked-40)*(rate*1.5)。
  • 条件分支冗余:你用了两个独立的 if 判断,其实改成 if-else 结构更简洁高效,也能避免不必要的重复判断。

修正后的 Python 3 代码

hours_Worked = float(input("Enter the hours worked\n"))  # 将输入转为数值类型
rate = 25.00
if hours_Worked > 40:
    grosspay = (40 * rate) + ((hours_Worked - 40) * (rate * 1.5))  # 修正加班工资计算逻辑
else:  # 用else替代第二个独立if
    grosspay = hours_Worked * rate
print("Gross Pay: ", str(grosspay))

补充提醒

如果需要兼容 Python 2 和 Python 3,建议始终显式转换输入的类型,不要依赖 Python 2 input() 的自动求值行为——这种方式存在安全风险,用户可以输入任意 Python 表达式执行,可能导致代码被恶意注入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:18:49