我不明白這個問題。
有兩種東西被大量不同的語義拋在一起,成爲「替代品」。
類型轉換是一回事。它適用於任何支持__float__
的對象,它可以是各種各樣的對象,其中很少是實際的數字對象。
try:
myinput = float(input)
except:
raise ValueError("input is not a well-formed number")
# at this point, input may not be numeric at all
# it may, however, have produced a numeric value
類型測試是另一回事。這隻適用於特定的一組類的正確實例的對象。
isinstance(input, (float, int, long))
# at this point, input is one of a known list of numeric types
這裏的示例類響應float
,但仍然不是數字。
class MyStrangeThing(object):
def __init__(self, aString):
# Some fancy parsing
def __float__(self):
# extract some numeric value from my thing
「實數(整數或浮點數)」這個問題通常是不相關的。許多東西都是「數字」,可以在數字操作中使用,但不是整數或浮點數。例如,您可能已經下載或創建了一個理性數字包。
過度驗證輸入沒有意義,除非您有一種算法不適用於某些類型。這些很少見,但有些計算需要整數,特別是它們可以進行整數除法和餘數運算。對於這些,你可能想要聲明你的值是整數。
Duplicate:http://stackoverflow.com/questions/354038/checking-if-string-is-a-number-python – 2008-12-16 14:28:10
謝謝!我不知道我該如何錯過。 – Kena 2008-12-16 14:33:10