在python if语句中将字符串与数值进行比较的难题

时间:2012-07-25 02:43:19

标签: python string

我想在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)&lt;大小,直到我使用int(size)转换大小。

1 个答案:

答案 0 :(得分:3)

python manual明确提到了

  

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

     

不同类型的对象,不同的数字类型和   不同的字符串类型,从不比较平等;这样的对象是有序的   一致但任意(以便排序异构数组   产生一致的结果)。此外,某些类型(例如,   文件对象)只支持任何比较的简并比较概念   这种类型的两个对象是不相等的。同样,这些对象是有序的   任意但始终如一。 &lt;,&lt; =,&gt;和&gt; =运算符将提升   任何操作数是复数时的TypeError异常。

相关问题:

How does Python compare string and int?