2016-08-27 9 views
-4

2つのint値を指定すると、1つが負で正の値が1の場合はTrueを返します。パラメータ "negative"がTrueの場合を除き、両方が負の場合にのみTrueを返します。ポジティブネガティブ - シンプルなPythonエクササイズ

私はついにそれを理解しました。

def pos_neg(a, b, negative): 
    if negative: 
    return (a < 0 and b < 0) 
    else: 
    return (a > 0 and b < 0) or (a < 0 and b > 0) 

しかし...なぜ私が代わりに真のこれら2つの行を返すのですか?どのように私は同様の状況でこれを行うことを知っていますか?

+0

「どうして私はTrueの代わりに2本の線を返すのですか?あなたは 'True'を返すために与えられたものではありません。条件が満たされているかどうかを返すはずです。関数が 'True'を返しただけの場合、そのポイントは何でしょうか? –

+0

私は(a <0とb <0)をTrueと考えることはできません。論理的に、私が最初に考えるものではありません。 –

答えて

1

これらの2行は返されません。それらの2つの行がと評価された値をに戻しています。あなたのケースでは、真偽に評価されるブール式です。その最後のブール値は、関数が返す値です。

+0

ありがとう!このような状況でこれはいつも大事なことなのでしょうか?真実か偽を使用すべきではありませんか? –

+0

これを行う方が良い方法です。式をifステートメントに入れて、リテラルtrueまたはリテラルfalseを返すことはできますが、それを行うのはもっと面倒です。 「これが真であれば真、そうでなければ偽を返す」と言っているのではなく、「これが真実かどうかを返す」という関数が表示されます。 –

+0

ああ...大丈夫。私はそれを手に入れます。 –

1

Pythonは、returnステートメントの次の式を評価し、評価の結果は返されます。次の2つのブール式を使用しています

(a < 0 and b < 0) 

を< 0とB < 0の両方の場合、これはTrueと評価します。それ以外の場合はFalseを

括弧のどちらかがTrueと評価された場合これがTrueに評価
(a > 0 and b < 0) or (a < 0 and b > 0) 

に評価します。それ以外の場合はFalseに評価されます

これはあなたが望むものです。したがって、pos_negは、指定された入力に応じてTrueまたはFalseを自動的に返します。

おそらくあなたは、条件がFalseの場合、条件が真とreturn Falseにあるならば、return Trueifステートメントを使用して、True/Falseのために各条件をテストすることを考えました。それはうまくいくが、不必要に長くて複雑なものになるだろう。ここでは、TrueFalseのいずれであっても、各式のブール値がどのような値であっても、戻ってきます。