条件式とは、その式が正しい(True)か誤り(False)を判定する式のことである
最初にTrueになった条件式のブロック(同じインデントで行頭が揃っている部分)が実行される
if True: # ここに条件式を書く
print("このブロックが実行される")
print("ここも実行される")
else:
print("このブロックは実行されない")
elseは他の条件がTrueにならなかったときに実行される
elseはなくてもプログラムとしては正しく動作する
ifの条件をチェックするのと同時に別の条件もチェックしたい場合、Pythonではelifを使うelifはifとelseの間に何個でも使える
| 記号(演算子) | 意味 | Trueとなる例 |
|---|---|---|
| == | 左右の辺が等しい | 3.0 == 3 "a" == "a" |
| != | 左右の辺が等しくない | "B" != "b" |
| < | 左辺が右辺より小さい | -2 < 10_000 |
| <= | 左辺が右辺以下 | 5 <= 5 |
| > | 左辺が右辺より大きい | 3.141 > 2.436 |
| >= | 左辺が右辺以上 | 5_000_000_000_000_000 >= 3_000_000 |
| in | 左辺が右辺に含まれる | "Green" in ["Red", "Green", "Blue"] 7 in range(10) |
| その他 | 意味 | x = 7のときにTrueとなる例 |
|---|---|---|
| A and B | AとBの両方がTrueならTrue |
(5 < x) and (x <10) |
| A or B | AまたはBのどちらかがTrueならTrue |
(x > 10) or (x < 8) |
| not A | Aではない | not x == 3 |
| A not in B | Bの中にAが含まれていない | x not in [1, 2, 3, 4, 5] |
次のコードの出力結果はどうなるか
num = 3
if num > 5:
print("A")
elif num < -2:
print("B")
elif -2 <= num < 4:
pass
else:
print("C")
print("D")【答え】
D【解説】
numが3だから、条件に当てはまるのは-2 <= num < 4の部分
範囲が連続している場合はandは不要
passは何もしない命令なので、if-elif-elseの外側にある
print("D")だけが実行される
passがないとIndentationError: expected an indented blockとなる
本来なら式や命令文が存在するはずのインデントブロックが存在しないためエラーが起きる
上記のコードでnum = 10のときは出力結果はどうなるか
【答え】
A
D
コードは基本的に上から下へ処理されていく
しかしループを使えばコードの一部・または全部を指定された条件で繰り返すことができる
コード例
count = 0
while count < 6:
print(count)
count += 1
print("end")
出力
0
1
2
3
4
5
end
- 1行目で
countに0が代入される - 2行目で
whileループに入る
条件からcount < 6がTrueの間は同じコードブロックの処理を繰り返す
countは0なのでwhileループは実行されるprint(count)で0が出力されるcount += 1でcountは1になる
countは1なのでwhileループは実行されるprint(count)で1が出力されるcount += 1でcountは2になる
countは2なのでwhileループは実行されるprint(count)で2が出力されるcount += 1でcountは3になる
countは3のでwhileループは実行されるprint(count)で3が出力されるcount += 1でcountは4になる
countは4なのでwhileループは実行されるprint(count)で4が出力されるcount += 1でcountは5になる
countは5なのでwhileループは実行されるprint(count)で5が出力されるcount += 1でcountは6になる
countは6なのでcount < 6がFalseになるため、ここでwhileループは終了する
print("end")でendが出力される
もしもcount += 1を忘れるとどうなるか
whileの終了条件count < 6を満たすことが永遠にできないため、永久ループになる
そのときはctrl + Cキーの同時押しでプログラムを強制終了できる
コード例
animals = ["elephant", "giraffe", "goat", "sheep"]
for animal in animals:
print(animal)
出力
elephant
giraffe
goat
sheep
上記の例ではlistであるanimalsの中身を順に取り出している
指定回数繰り返すときはrange()を使うのが便利
range()はリストではない(ジェネレータと呼ばれるもの)だが、似たように使える
コード例
# 3回同じことを繰り返す
for _ in range(3):
print("Hello!")
出力
Hello!
Hello!
Hello!
# 1~5までの自乗数を表示する
for i in range(1, 6):
print(f"{i}: {i ** i}")
出力
1: 1
2: 4
3: 27
4: 256
5: 3125
breakを使うとそのループから抜け出すことができる
下記はwhileの項目で書いたコードと同じ出力をするコード
count = 0
while True:
if count >= 6:
print("end")
break
print(count)
count += 1
このコードではcountが6未満ではcountを出力してから+1する
countが6以上になるとendを出力したあとbreakでループから抜け出す
continueは以降の処理を無視して次の処理を開始する
1から20までの数で、3の倍数を無視して表示するコードだ
n = 0
while n <= 20:
n += 1
if n % 3 == 0:
continue
else:
print(n)
出力
1
2
4
5
7
8
10
11
13
14
16
17
19
20