print("3" < "10") #This prints False
print("3" < "4") #This prints True如何比较字符串内的数字,为什么其中一个是真,另一个是假的,而在可能中毒的情况下,比较字符串内的数字时两者都应该是真?
我在做progamarcadegames.com练习时遇到了这种情况,我正在使用python3.3.3shell
发布于 2014-08-22 14:26:54
您正在比较字符串;这些字符串是排序的词典学。
由于'1'在ASCII标准中的出现早于'3',所以字符串'10'在'3'之前排序,并且被认为更低,就像‘'10'’将根据字母'R‘之前的字母'M’进行排序,而'jco‘则在’ASCII标准‘中大写字母后面排列,所以’jco‘将在'Martijn’之后排序。
如果要将值进行数值比较,则将其转换为整数。
发布于 2014-08-22 14:26:58
在这个问题上,正如你自己说的那样,你在比较两个字符串。每个字符串将根据1中的10小于3的每个字符的ASCII值进行比较。
>>> ord('1')
49
>>> ord('3')
51
>>> ord('4')
52如果需要将字符串转换为可以使用int(str)的数字
>>> print(int("3") < int("10"))
True
>>> print(int("3") < int("4"))
True
>>> 否则,您将比较字符串值。
发布于 2014-08-22 14:27:17
在字符串中,比较工作从左到右,一个字符一个字符,如果正在比较的字符相同,则下一个字符将被比较。
例如:
"1“的评价将小于"3”
此外,由于同样的原因,"01000“将小于"1”。
要将它们作为数字进行比较,必须将它们转换为数字。
https://stackoverflow.com/questions/25449289
复制相似问题