Lesson 3
条件:if-then-else
1. 構文
最初のレッスンのすべてのプログラムは、行の後に連続して実行されました。ラインをスキップすることはできませんでした。
以下の問題を考えてみましょう:与えられた整数Xがその絶対値を決定する。 X> 0の場合、プログラムは値Xを出力しなければなりません。この現象は、シーケンシャルプログラムを使用して到達することはできません。プログラムは条件付きで次のステップを選択する必要があります。それは条件が助けになる場所です:
x = int(input()) if x > 0: print(x) else: print(-x)
このプログラムは、条件文を使用しif
。 if
後に条件(x > 0)
コロンで続けます。その後、条件が真である(すなわちTrue
評価される)場合にのみ実行される命令のブロックを置く。このブロックの後にelse
、コロン、および条件が偽(すなわちFalse
評価)の場合にのみ実行される別の命令ブロックが続きます。上のケースでは、条件がfalseであるため、 'else'ブロックが実行されます。各ブロックはスペースでインデントする必要があります。
要約すると、Pythonの条件文の構文は次のとおりです。
if condition : true-block several instructions that are executed if the condition evaluates to True else: false-block several instructions that are executed if the condition evaluates to False
'false'ブロックを持つelse
キーワードは、条件がfalseの場合は何もしないでください。たとえば、変数x
を次のように絶対値で置き換えることができます。
x = int(input()) if x < 0: x = -x print(x)
この例では、変数x
は、 x < 0
場合にのみ-x
割り当てられx < 0
。対照的に、命令print(x)
はインデントされていないために毎回実行されるため、 'true'ブロックに属しません。
インデントはPythonのコードブロックを分離する一般的な方法です。同じブロック内のすべての命令は同じ方法で字下げする必要があります。つまり、行の先頭に同じ数のスペースを入れる必要があります。インデントには4つのスペースを使用することをお勧めします。
インデントは、Pythonを他の言語のほとんどとは異なるものにするもので、中括弧{
と}
を使ってブロックを形成します。
ところで、Pythonには絶対値のための組み込み関数があります:
x = int(input()) print(abs(x))
2. ネストされた条件
Pythonの命令は、「真の」ブロックと「偽」のブロックに置くことができ、別の条件文も含めることができます。このようにして入れ子状態になります。内部状態のブロックは、さらに2つのスペース(たとえば、8スペース)を使用してインデントされます。例を見てみましょう。平面上の点の座標が与えられると、その象限を印刷する。
x = int(input()) y = int(input()) if x > 0: if y > 0: # xは0より大きく、yは0より大きく print("Quadrant I") else: # xは0より大きく、yは0より小さくまたは等しい print("Quadrant IV") else: if y > 0: # xは0より小さいか等しい、yは0より大きい print("Quadrant II") else: # xは0より小さいか等しい、yは0より小さいか等しい print("Quadrant III")
この例では、コメントを使用します。プログラムの実行に影響を与えない説明テキストです。このテキストはハッシュ#
始まり、行末まで続きます。
3. 比較演算子
通常if
後の条件には、次の演算子が1つ以上あります。
-
<
- もっと少なく - 左辺が右辺よりも小さい場合、条件は真です。
-
>
- 大きい - 左辺が右辺より大きい場合、条件は真です。
-
<=
- それ以下である。
-
>=
- 大きいか等しい。
-
==
- 等しい。
-
!=
- 等しくない。
例えば、条件x * x < 1000
手段「という表現の値をx * x
未満1000」、及び条件2 * x != y
、変数の二倍の値」を意味しx
値に等しくありません変数y
"
Pythonの比較演算子はa == b == c
またはx <= y >= 10
ようにグループ化することができます。プログラミング言語の中ではまれなことです。
4. Boolオブジェクトと論理演算子
私たちが使用して、2つの整数オブジェクトを合計すると+
ように、演算子を2 + 5
、私たちは、新しいオブジェクトを取得する: 7
。同じように、 2 < 5
ように<
演算子を使って2つの整数を比較すると、新しいオブジェクトが得られます: True
。
print(2 < 5) print(2 > 5)
True
およびFalse
オブジェクトには、 bool
という特別な型があります。すべての型名を使用してオブジェクトをその型にキャストすることができるので、このキャストが数値に対して与えるものを見てみましょう:print(bool(-10)) # 真 print(bool(0)) # False - 唯一の偽数はゼロです print(bool(10)) # 真 print(bool('')) # False - 空文字列のみが偽の文字列です print(bool('abc')) # 真
場合によっては、一度にいくつかの条件をチェックする必要があります。例えば、条件n % 2 == 0
( n
を2
割ったときに剰余が0
になる)を使用して、数値n
が2で割り切れるかどうかを調べることができます。 2つの数字n
とm
が両方とも2で割り切れることを確認する必要がある場合は、 n % 2 == 0
とm % 2 == 0
両方をチェックする必要があります。これを行うには、 n % 2 == 0 and m % 2 == 0
演算子and
(論理積)を使用してそれらを結合します。
Pythonには論理AND、論理OR、否定があります。
演算子and
と評価された二項演算子であるTrue
、その左側と右側の両方がある場合にのみ場合True
。
オペレータor
に評価バイナリ演算子であるTrue
その側面の少なくとも一方がある場合にTrue
。
演算子は単項否定ではnot
、それに続いていくらかの値があります。その値がFalse
あればTrue
評価され、 False
あればTrue
評価されTrue
。
2つの数字の少なくとも1つが0で終わることを確認しましょう:
a = int(input()) b = int(input()) if a % 10 == 0 or b % 10 == 0: print('YES') else: print('NO')
数a
が正で、数b
が負でないことを確認しましょう:
if a > 0 and not (b < 0):
not (b < 0)
代わりに(b >= 0)
書くことができます。
5. 'elif'単語
条件演算子を使用しif... elif... else
オプションが3つ以上ある場合は、 if... elif... else
文を使用できます。
プレーン上の点(x、y)と上からの象限を使ってサンプルを書き直すことで、どのように動作するかを見てみましょう:
x = int(input()) y = int(input()) if x > 0 and y > 0: print("Quadrant I") elif x > 0 and y < 0: print("Quadrant IV") elif y > 0: print("Quadrant II") else: print("Quadrant III")
この場合、最初の真の条件が見つかるまで、 if
とelif
条件が次々とチェックされます。その状態の真のブロックだけが実行されています。すべての条件が偽であれば、 'else'ブロックが存在していればそれが実行されています。