2017-10-12 17 views
-1

私はインタプリタで、Pythonでは、True == 1Trueと評価されています。つまり、int(True)の出力は1です。int( "True")とfloat( "True")がPythonで動作しないのはなぜですか?

I入力float("True")通訳が戻る場合:

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

をI入力int("True")通訳戻ります場合:

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

これはなぜですか? TrueFalseはそれぞれ10に等しいので、動作しませんか? ValueErrorの原因は何ですか?int()

+0

引用符を削除して試してみてください –

+3

"True"はTrueとは異なる文字列です。 int(True)を試してみてください。 – newacc2240

+0

'int'または' float'の内部にはおそらく何らかの型検出条件があり、型がブール値なら 'True'を' 1'または 'False'に' 0'に変換できます。タイプが文字列の場合、文字列は実際の数字の表現として解釈されます。 '' 5 ''や' '2.6''ならば、エラーが発生します。文字列 '' True ''の特別な扱いはなく、' 'Floccinaucinihilipilification" '' –

答えて

0

intおよびfloat関数は、一般的なPython構文よりはるかに制限された構文を解析します。 Pythonの式Trueは、オブジェクトが1に等しいと評価されますが、intはPythonの式として文字列を解釈しません。文字列を整数の10進表現として解釈しようとしています。これはまた、int('2+2')またはint('somefunction()')を実行できない理由です。

+0

ありがとうございました!これはまさに私が探していた答えです。 'int(2 + 2)'を試したり、他のケースで実験したりすることは私には起こりませんでした –

0

真は「真」は、文字列として評価されているため、これはbool型と 「真」の文字列型

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 'であると思います。' True'がブール値であっても 'int(" True ")== int(" 1 ")'を意味すると思います。ありがとう! –

関連する問題