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

