0

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

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

任何线索或指导???

4

3 回答 3

6

您正在比较“31”和 75。试试int(a.split()[4]) > time_out:吧。

于 2013-02-22T01:19:08.740 回答
3

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

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

注意:另一个答案中的信息表明,在讨论python解释器时,上述解释实际上是不准确的

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



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

TypeError:不可排序的类型:str() > int()

更符合用户期望

于 2013-02-22T01:22:45.483 回答
2

拆分后,您实际上是在比较一个字符串和一个 int。不幸的是,这在 CPython 3.0 之前的版本中是完全奇怪的,并且基于所有事物的类型名称,而不是内容或二进制表示。请参阅Python 如何比较字符串和 int?

于 2013-02-22T01:24:34.877 回答