処理フロー(if, while, for, 例外処理)

Pythonの基本的な制御構文(if, while, for, 例外処理)について紹介します。他の言語との違い(ブロックをインデントで表す記法など)を意識して確認してみてください。

if

利用例

def sample_print(x):
    if x > 10:
        print('aaa')
    elif x == 10:
        print('bbb')
    else:
        print('ccc')


sample_print(11)    # aaa
sample_print(10)    # bbb
sample_print(9)     # ccc
if 1 in [1, 2, 3]:
    print('含みます')

if 4 not in [1, 2, 3]:
    print('含みません')

真偽値判定

以下 false と判定します。

  • false
  • None
  • 0
  • 0.0
  • 空文字列
    • ""
  • 空のコンテナ(リスト、タプル、辞書など)
    • [] () {}

print(bool(None))       # False
print(bool(0))          # False
print(bool(0.0))        # False
print(bool(""))         # False
print(bool([]))         # False
print(bool(()))         # False
print(bool({}))         # False

print(bool(1))          # True
print(bool(1.0))        # True
print(bool("a"))        # True
print(bool([1]))        # True
print(bool((1,)))       # True
print(bool({"a": 1}))   # True

while

利用例

count = 10
while True:
    count -= 1

    # 2で割り切れる場合、スキップ
    if count % 2 == 0:
        continue

    # 0より小さい場合、繰り返しを中断
    if count < 0:
        break

    print(count)
9
7
5
3
1

for

利用例

# リストの場合
my_list = [1, 2, 3]
for value in my_list:
    print(value)

print("--------------------")

# 辞書の場合
my_dict = {"国語": 90, "数学": 74, "英語": 80}
for k, v in my_dict.items():
    print(k, v)
1
2
3
--------------------
国語 90
数学 74
英語 80

利用例
( range関数でリスト生成 )

range関数 を利用して、1から10まで2ステップで表示してみます。

for i in range(1, 10, 2):
    print(i)
1
3
5
7
9

利用例
( enumerate関数でループ回数も表示 )

enumerate関数 を利用すると、要素ループ回数 を同時取得できます。

my_list = ["apple", "orange", "banana"]

# 0始まり
for i, name in enumerate(my_list):
    print(i, name)

# 任意の整数値から始めることもできる
for i, name in enumerate(my_list, 10):
    print(i, name)
0 apple
1 orange
2 banana
10 apple
11 orange
12 banana

利用例
( zip関数で複数リストをまとめて取得 )

zip関数 を利用すると、複数リストをまとめて取得することができます。

subjects = ['国語', '数学', '英語']
scores = [90, 78, 88]

for subject, score in zip(subjects, scores):
    print(subject, score)
国語 90
数学 78
英語 88

例外処理

  • try に、例外発生の可能性がある処理を記述します。
  • except に、該当例外と該当例外が発生したときに実行する処理を記述します。
  • finally に、try文を抜けるときに実行する処理を記述します。
try:
    a = 10 / 0
except ZeroDivisionError as e:
    print("[EXCEPT] ZeroDivisionError")
    print(e)
except ValueError as e:
    print("[EXCEPT] ValueError")
    print(e)
except:
    print("[EXCEPT] 何らかのエラーが発生")
finally:
    print("例外の有無に関係なく、必ず最後に実行")
[EXCEPT] ZeroDivisionError
division by zero
例外の有無に関係なく、必ず最後に実行