比较python中的列表值时出现问题

时间:2013-02-22 01:14:10

标签: python python-2.7

我有一个程序在运行时解析输出,将该时间与给定值进行比较并打印差异,但它不能按照我的方式工作:

a = 'Time Taken for Response: 31 msec'

time_out = 75

if a.split()[4] > time_out:

    print "time taken is more than given conditions"

    print a.split()[4] 

输出如下:

time taken is more than given conditions

31

我不明白为什么程序在31 < 75

时进入循环本身

任何线索或指导???

3 个答案:

答案 0 :(得分:6)

您正在比较“31”和75.请改为int(a.split()[4]) > time_out:

答案 1 :(得分:3)

您正在将字符串与整数进行比较。

字符串的二进制表示是一个比十进制数的二进制表示更大的二进制数。

注意:another answer中的信息表明在讨论python解释器时,上述内容是一个事实上不准确的解释

转换为int,如 if int(a.split()[4]) > time_out:应该给你正确答案。



顺便说一句,如果你使用python 3而不是python 2,尝试比较一个字符串和int会给你以下错误:

  

TypeError:unorderable类型:str()&gt; INT()

更符合用户期望

答案 2 :(得分:2)

分割之后,实际上是在比较字符串和int。不幸的是,这在3.0之前的CPython中是完全奇怪的,并且基于所有事物的类型名称,而不是内容或二进制表示。 见How does Python compare string and int?