2

私はpythonが初めてで、if条件のルールがわかりません:

条件 1:

if 0:
   Print "true"

output:

条件 2:

if -1:
   Print "true"

output: true

条件 3:

if 1:
   Print "true"

output: true

から私のコードを説明します。

条件 1: false(boolean) として処理されたため、ステートメントを出力しませんでした

条件 2: true(boolean) として扱われるため、ステートメントを出力します。

なぜそれはtrueを取るのですか、それは負の値です(私の仮定はfalseのみを取ります)?

条件 3: true (ブール値) として扱われるため、ステートメントを出力します。

4

5 に答える 5

5

次のように簡単です。

Pythonifステートメント (および他の多くの言語) の条件は、通常の型に関係なく、ブール値に変換されます。これは、引数が指定されているか、異なる値が指定されているかを指定する、定義済みのメカニズムを使用して行われTrueますFalse

Python では、引数は次のようにブール値に変換されます (少し言い換えてあります)。

4.1 真理値テスト

if または while 条件で使用するため、または以下のブール演算のオペランドとして使用するために、任意のオブジェクトを真偽値についてテストできます。引数が次のいずれかの場合:

  • None
  • False
  • 任意の数値型 (integer、float、long、complex) として表される数値 0
  • 空のシーケンス ( '', (), [])
  • 空のマップ ( {})
  • ユーザー定義クラスのインスタンス (クラスが__bool__()または__len__()メソッドを定義している場合) で、そのメソッドが整数のゼロまたはブール値を返す場合False

それからですFalse。それ以外の場合は ですTrue

-1は偽りではないため、真であり、負であっても if ステートメントを実行します。

于 2013-10-28T11:15:52.757 に答える
2

おそらく探しているもの:

Python の真理値: http://docs.python.org/2.4/lib/truth.html

任意のオブジェクトは、真偽値、if または while 条件での使用、または以下のブール演算のオペランドとしてテストできます。次の値は false と見なされます。

なし

間違い

0、0L、0.0、0j など、任意の数値型のゼロ。

''、()、[] などの空のシーケンス。

{} などの空のマッピング。

ユーザー定義クラスのインスタンス、クラスが ゼロ以外の() またはlen () メソッドを定義している場合、そのメソッドが整数ゼロまたはブール値 False.2.5 を返す場合

他のすべての値は true と見なされます。したがって、多くのタイプのオブジェクトは常に true です。

于 2013-10-28T11:14:25.407 に答える
1

0 のみ False として扱われます。負の数は、それが False であることを意味しません。負の数を試してみると、結果は True になります。

于 2013-10-28T11:14:40.657 に答える
1

ドキュメントには、どの値が false と見なされるかが正確に示されています。

  • None
  • False
  • 0、、、など0Lの任意の数値型の0.0ゼロ0j
  • ''、などの空のシーケンス。()[]
  • などの空のマッピング{}
  • __nonzero__()クラスがまたは__len__()メソッドを定義している場合、そのメソッドが整数の 0 またはboolvalueを返す場合、ユーザー定義クラスのインスタンスFalse。これらの特別なメソッドに関する追加情報は、Python リファレンス マニュアル (基本的なカスタマイズ) に記載されています。
于 2013-10-28T11:20:05.403 に答える
1

数値が負であるからといって、それが であるとは限りませんFalse

>>> bool(-1)
True

実行するときはif <something>:、python が実行していると考えてif bool(<something>)ください。

bool(<something>)が True の場合、if ステートメントが実行されます。そうでなければ、そうはなりません。

于 2013-10-28T11:12:00.103 に答える