如何检查字符串> int评估为True?为什么string> int评估为True?
>>> strver = "1"
>>> ver = 1
>>> strver > ver
True
>>> strVer2 = "whaat"
>>> strVer2 > ver
True
做了更多一些尝试:
>>> ver3 = 0
>>> strVer2 > ver3
True
我觉得应该有尝试比较时的错误,但它好像没有什么是用来处理这样的错误,或assert
应使用但如果使用-O标志运行python代码,可能会很危险!
有一个很好的答案类似的问题:http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int –
这只是一个猜测在这里,但我会说这种行为是存在的,以便可以将字符串和整数都放在有序容器中(这要求对元素进行排序,因此这些元素必须具有可比性)。所以我猜想有人认为字符串的排名高于int,无论他们的价值如何。 – ereOn
“我认为应该有一个错误” - 开发人员同意!他们改变了行为,在Python 3中引发了一个TypeError。 – user2357112