-4

我认为在 python 中将 int 与字符串(带有数值)进行比较时,没有必要显式转换字符串。但是下面的代码给了我一个教训:

size = raw_input("a numeric value:")
a_str = 'abcdefghijklmn'
if len(a_str) > size:
    print("The string is longer.")
elif len(a_str) < size:
    print("The string is shorter.")
else:
    print("they are equal in length.")

无论我输入什么值,它总是选择 len(a_str) < size,直到我使用 int(size) 转换大小。

4

1 回答 1

2

python手册明确提到

CPython 实现细节:除数字外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。

不同类型的对象,除了不同的数值类型和不同的字符串类型,从不比较相等;此类对象的排序一致但任意(因此对异构数组进行排序会产生一致的结果)。此外,某些类型(例如,文件对象)仅支持退化的比较概念,其中该类型的任何两个对象都不相等。同样,这些对象的顺序是任意但一致的。当任何操作数是复数时,<、<=、> 和 >= 运算符将引发 TypeError 异常。

相关问题:

Python如何比较string和int?

于 2012-07-25T03:20:15.467 回答