print("3" < "10") #This prints False
print("3" < "4") #This prints True
如何比较一个字符串中的数字,以及为什么一个是True而另一个为False,如果在比较字符串内的数字是可能的两种情况下都应该是True?
我在使用progamarcadegames.com进行练习时遇到了这个问题,我使用的是python 3.3.3 shell
答案 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)
在问题中,你正在比较你自己说的两个字符串。对于1
中10
小于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")
,然后比较它们的数值。