为什么我的字符串比较认为'100%'< '70%'?

时间:2015-02-13 07:51:37

标签: python string

我使用以下代码:

if str(percentage[0]) > '70%':

关于以下输入:

82%
92%
78%
73%
100%
50%
100%
67%

但我得到以下输出:

82%
92%
78%
73%

为什么python没有评估和打印100%事件呢?我的逻辑中缺少什么东西吗?

3 个答案:

答案 0 :(得分:4)

字符串逐字符比较:

1. 2. 3. 4.
-----------
7  0  %
1  0  0  %

您看,第一个7比第二个字符串中的1“更大”,因为字符012,{ {1}},345678按此顺序存储。

我认为最合乎逻辑的是将字符串转换为整数并进行比较:

9

答案 1 :(得分:2)

您正在比较字符串;这些是排序lexicographically,首先是第一个字符,然后只有匹配时,才会比较第二个字符。

因此,'1'出现在'2' 之前,无论之后是什么。 '70'大于'100',因为'7'大于'1'

不要比较字符串。比较数字:

if int(percentage[0].rstrip('%')) > 70:

答案 2 :(得分:1)

字符串被排序并比较为字符串,而不是数字。

In [1]: "100%" > "70%"
Out[1]: False

In [3]: int("100%"[:-1]) > int("70%"[:-1])
Out[3]: True