" 3" < " 4"评估为真,但" 3" < " 10"评估错误。为什么?

时间:2014-08-22 14:24:13

标签: python

print("3" < "10") #This prints False
print("3" < "4") #This prints True

如何比较一个字符串中的数字,以及为什么一个是True而另一个为False,如果在比较字符串内的数字是可能的两种情况下都应该是True?

我在使用progamarcadegames.com进行练习时遇到了这个问题,我使用的是python 3.3.3 shell

4 个答案:

答案 0 :(得分:10)

您正在比较字符串;这些是按lexicographically排序的。

由于'1'在ASCII标准中早于'3',因此字符'10''3'之前排序并被视为较低,就像&#39; Martijn&#39 ;将在罗德里戈&#39;之前进行分类。基于字母&#39; M&#39;来到这封信的前面,但是&#39; jco&#39;将在&#39; Martijn&#39;之后排序。因为小写字符是在ASCII standard中的大写字母后面列出的。

如果要以数字方式比较它们,请将值转换为整数。

答案 1 :(得分:2)

在问题中,你正在比较你自己说的两个字符串。对于110小于3的每个字符,每个字符串将进行比较。

>>> ord('1')
49
>>> ord('3')
51
>>> ord('4')
52

如果您需要将字符串转换为数字,可以使用int(str)

>>> print(int("3") < int("10"))
True
>>> print(int("3") < int("4"))
True
>>> 

否则您正在比较字符串值。

答案 2 :(得分:0)

在字符串中,比较从左到右,逐个字符,如果要比较的字符相同,则下一个将进行比较

例如:

&#34; 1&#34;将被评估低于&#34; 3&#34;

此外,&#34; 01000&#34;将小于&#34; 1&#34;出于同样的原因

要将它们作为数字进行比较,必须将它们转换为数字

答案 3 :(得分:0)

如果要比较字符串中的数字,则必须将它们转换为这样的数字 例如int("3"),然后比较它们的数值。