制御構造

プログラムは入力された値に応じて, 様々な処理を行います. 制御構造を用いると, 条件分岐や反復処理などを実現できます.

if 文

if 文は条件分岐を実現します. if 文は次のように書きます.

if 条件1:
    条件1が成立した時の処理
elif 条件2:
    条件1は成立しなかったが, 条件2が成立した時の処理
else:
    条件1も条件2も成立しなかった時の処理
In [1]:
x = 75
if x >= 80:
    print("優")
elif x >= 70:
    print("良")
elif x >= 60:
    print("良")
else:
    print("不可")

条件が成立するとは条件の値が True であることを意味し, 条件が成立しないとは条件の値が False であることを意味します.

>= という演算子は真偽値 True または False を返すものです. 他にも ==, !=, <, <=, > のような比較演算子があります.

上の例の条件の値を実際に見てみましょう.

In [2]:
x = 75
print(x >= 80)
print(x >= 70)
print(x >= 60)
False
True
True

前の章の in 演算子も真偽値 True または False を返すものでした. if 文と組み合わせて次のようなプログラムが作れます.

In [3]:
eiwa = {
    "apple": "りんご",
    "dog": "イヌ",
    "egg": "卵"
}

if "dog" in eiwa:
    print("dog は eiwa のキーです")
else:
    print("dog は eiwa のキーではありません")

if "cat" in eiwa:
    print("cat は eiwa のキーです")
else:
    print("cat は eiwa のキーではありません")
dog は eiwa のキーです
cat は eiwa のキーではありません

for 文

for 文は反復処理を実現します. Python の for 文は次のように書きます.

for 変数名 in 反復するデータ:
    処理

Python では C などのプログラミング言語と違い, リストや文字列のシーケンス型について反復処理を行えます.

In [4]:
primes = [2, 3, 5, 7, 11, 13]
print("素数の先頭6個:")
for prime in primes:
    print(prime)

print("文字列を1文字ずつ:")
for char in "文字列":
    print(char)
素数の先頭6個:
2
3
5
7
11
13
文字列を1文字ずつ:
文
字
列

range() 関数を使うと, 簡単に数列を作ることができます.

In [5]:
for i in range(10):
    print(i)
0
1
2
3
4
5
6
7
8
9

前の章で紹介した dict.items() はペア (タプル) のリストを返す関数でした. Python の for ではペアのリストについても簡単に反復処理が行えます.

In [6]:
print(eiwa.items())

for english, japanese in eiwa.items():
    # english と japanese にペアの値がそれぞれ入ります
    print("英語: " + english)
    print("日本語: " + japanese)
dict_items([('egg', '卵'), ('dog', 'イヌ'), ('apple', 'りんご')])
英語: egg
日本語: 卵
英語: dog
日本語: イヌ
英語: apple
日本語: りんご

練習

  • ある変数の値が偶数か奇数か判定して結果を表示するプログラムを作ってみましょう
  • 0から100までの数を順に表示するプログラムを作ってみましょう
    • 出力例: 0 1 2 3 ... 100
  • 0から100までの数の総和を表示するプログラムを作ってみましょう
    • 出力例: 5050
  • 0から100までの数のうち, 奇数だけを順に表示するプログラムを作ってみましょう
    • 出力例: 1 3 5 ... 99
  • ある変数の値が素数かどうか判定して結果を表示するプログラムを作ってみましょう
  • 2から100までの数のうち, 素数だけを順に表示するプログラムを作ってみましょう
    • 出力例: 2 3 5 7 ...