2017-10-12 80 views
-1

我在翻譯知道在python中搞亂了,True == 1評估爲True,這意味着int(True)輸出1爲什麼int(「True」)和float(「True」)在Python中不起作用?

如果我輸入float("True")解釋回報:

ValueError: could not convert string to float: 'True'

,如果我輸入int("True")解釋回報:

ValueError: invalid literal for int() with base 10: 'True'

這是爲什麼?由於TrueFalse分別等於10,它不應該工作嗎?什麼導致int()中的ValueError?

+0

刪除引號並嘗試 –

+3

「True」是一個字符串,與True不同。給int(True)一個嘗試。 – newacc2240

+0

在'int'或'float'裏面可能會有一些類型檢測條件,如果類型是布爾類型,它可以將'True'轉換爲'1'或'False'轉換爲'0'。如果類型是字符串,則它將該字符串解釋爲實際數字的表示,例如, ''5「'或'」2.6「',如果它不能這樣做,那麼會引發錯誤。對字符串'「True」沒有特殊的處理,對於轉換爲int或浮點數不是''Floccinaucinihilipilification''' –

回答

0

intfloat函數解析比一般Python語法更嚴格的語法。 Python表達式True可能是一個等於1的對象,但int不會將字符串解釋爲Python表達式;它試圖將字符串解釋爲一個整數的基10表示。這也是爲什麼你不能做int('2+2')int('somefunction()')

+0

謝謝!這正是我正在尋找的答案。我甚至沒有想過嘗試'int(2 + 2)'或者嘗試其他情況 –

0

真是布爾類型和 「真」的字符串型

int(True) 
Out[2]: 1 

float(True) 
Out[3]: 1.0 

type(True) 
Out[4]: bool 
0

的。這是因爲「真」作爲字符串進行評價。所以int(True)int("True")是不一樣的。嘗試type(True)type("True")以確認。

+0

這是有道理的。我猜它對我來說破壞的地方是'True == 1',我認爲這意味着'int(「True」)== int(「1」)',即使'True'是一個布爾值。謝謝! –

相關問題