如何檢查字符串> 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