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

Python比较运算符在if-else中结果异常,负数比较出错排查

代码存在的问题及负数比较错误原因

你的代码主要有两个核心问题,直接导致了负数比较的错误结果:

1. 未将输入转换为数值类型,进行的是字符串字典序比较

input()函数获取的用户输入默认是字符串类型,而非数字。直接比较两个字符串时,Python会按照字符的ASCII码值进行字典序比较,而非数值大小比较。

比如输入-10和-20,对应的字符串是"-10"和"-20":

  • 第一个字符都是'-',ASCII码相同;
  • 第二个字符是'1'和'2','1'的ASCII码(49)小于'2'的ASCII码(50),所以字符串比较结果为"-10" < "-20",但数值上-10 > -20,这就出现了错误的判断结果。

2. 使用is判断值相等是错误的

is运算符的作用是判断两个变量是否指向同一个内存对象(即对象身份相同),而非判断它们的值是否相等。对于字符串来说,只有少数小的、常用的字符串会被Python缓存复用,大部分情况下,即使两个字符串值相同,它们也是不同的对象,用is判断会返回False,导致相等判断失效。正确的做法是用==来比较值是否相等。


修正后的代码

# Program1: Take two numbers as input from User and print which one is greater or are they equal.

num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
if num1 == num2:
    print("The two numbers are equal")
elif num1 < num2:
    print("The first number is less than the second number")
else:
    print("The first number is greater than the second number")

修正说明:

  • 将输入转换为float类型(如果仅需整数,也可以用int),确保进行数值比较;
  • 用==替代is来判断值相等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:04:55