2
我有這個簡單的python程序。我跑它,它打印yes
,實際上,我希望它不打印任何東西,因爲14
不大於14
。如何比較python中的字符串和整數?
我看到這個related的問題,但它不是很有幫助。
#! /usr/bin/python
import sys
hours = "14"
if (hours > 14):
print "yes"
我在做什麼錯了?
我有這個簡單的python程序。我跑它,它打印yes
,實際上,我希望它不打印任何東西,因爲14
不大於14
。如何比較python中的字符串和整數?
我看到這個related的問題,但它不是很有幫助。
#! /usr/bin/python
import sys
hours = "14"
if (hours > 14):
print "yes"
我在做什麼錯了?
轉換字符串爲一個整數與int
:
hours = int("14")
if (hours > 14):
print "yes"
在CPython2,比較不同類型的兩個非數值對象時,該比較是通過比較名稱的類型進行。由於'int' < 'string'
,任何int都小於任何字符串。
In [79]: "14" > 14
Out[79]: True
In [80]: 14 > 14
Out[80]: False
這是一個經典的Python陷阱。在Python3中,這個疣已經得到糾正 - 比較不同類型的非數值對象默認會引發TypeError。
CPython的實現細節:除了 數量不同類型的對象是由它們的類型名稱排序;不支持正確比較的相同類型的對象 按其地址排序。