Skip to content

Latest commit

 

History

History
216 lines (187 loc) · 5.95 KB

File metadata and controls

216 lines (187 loc) · 5.95 KB

条件分岐(if-elif-else)

条件式とは、その式が正しい(True)か誤り(False)を判定する式のことである
最初にTrueになった条件式のブロック(同じインデントで行頭が揃っている部分)が実行される

if True:  # ここに条件式を書く
    print("このブロックが実行される")
    print("ここも実行される")
else:
    print("このブロックは実行されない")
  • elseは他の条件がTrueにならなかったときに実行される
    • elseはなくてもプログラムとしては正しく動作する
  • ifの条件をチェックするのと同時に別の条件もチェックしたい場合、Pythonではelifを使う
    • elififelseの間に何個でも使える

条件分岐に使う記号

記号(演算子) 意味 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]

例題1

次のコードの出力結果はどうなるか

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となる
本来なら式や命令文が存在するはずのインデントブロックが存在しないためエラーが起きる

例題2

上記のコードでnum = 10のときは出力結果はどうなるか

【答え】
A
D

ループ処理

コードは基本的に上から下へ処理されていく
しかしループを使えばコードの一部・または全部を指定された条件で繰り返すことができる

while: 条件がTrueの間は処理を続ける

コード例

count = 0
while count < 6:
    print(count)
    count += 1
print("end")
    

出力

0
1
2
3
4
5
end

動作の解説

  • 1行目でcountに0が代入される
  • 2行目でwhile ループに入る
     条件からcount < 6Trueの間は同じコードブロックの処理を繰り返す
  1. countは0なのでwhileループは実行される
    1. print(count)で0が出力される
    2. count += 1countは1になる
  2. countは1なのでwhileループは実行される
    1. print(count)で1が出力される
    2. count += 1countは2になる
  3. countは2なのでwhileループは実行される
    1. print(count)で2が出力される
    2. count += 1countは3になる
  4. countは3のでwhileループは実行される
    1. print(count)で3が出力される
    2. count += 1countは4になる
  5. countは4なのでwhileループは実行される
    1. print(count)で4が出力される
    2. count += 1countは5になる
  6. countは5なのでwhileループは実行される
    1. print(count)で5が出力される
    2. count += 1countは6になる
  7. countは6なのでcount < 6Falseになるため、ここでwhileループは終了する
  • print("end")でendが出力される
注意

もしもcount += 1を忘れるとどうなるか
whileの終了条件count < 6を満たすことが永遠にできないため、永久ループになる
そのときはctrl + Cキーの同時押しでプログラムを強制終了できる


for: リストとかの中身がなくなるまで繰り返す

コード例

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: ループを中止して抜け出す

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: 次のループを開始する

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