「Python」プログラミングでは、次の概念を使用してコードのフローを制御できます:

  • 条件文 (conditional statement): if, elif, and else
  • ループ (Loops): Using while or for with keywords such as break and continue

条件文を使用すると、特定の条件に基づいて特定のコードブロック(一連のコード)を実行できます。ループを使用すると、コードのブロックを複数回繰り返すことができます。break キーワードは途中でループを終了するために使用されます。一方で、continue はループ内の残りのコードをスキップして次のループを開始することができます。これらのツールを理解し、マスターすることで、よりダイナミックで効率的な「Python」コードを作成することができます。

1 条件文

条件文は、条件に基づいてさまざまなアクションを実行するために使用されます。「Python」language には主に3つのタイプの条件文が存在します: ifelif、 and else

1.1 if 文 (if statement)

if ステートメントは、ある条件が満たされているかどうかを確認するために使用されます。もしその条件がTrueであれば、if ブロック内のコードが実行されます。もしその条件がFalseであれば、if ブロック内にあるコードはスキップされ、実行されません。

# Example of if statement
x = 10
if x > 5:
    print("x is greater than 5")
x is greater than 5

2 elif文 (elif statement)

elif文は は「else if」の略であり、if文の後に使用されます。if文の条件がFalseであれば、elif文の条件がチェックされます。その条件が Trueであれば、 elifブロック内のコードが実行されます。

# Example of elif statement
y = 0
if y < 0:
    print("y is negative")
elif y == 0:
    print("y is zero")
y is zero

3 else文 (else statement)

else文は、if文の条件とelif文の条件のどれもがTrueではない場合、対応するコードのブロックを実行します。

上記のelif文の例では、yが正である場合を扱うことができません。そのため、else文を追加します。

# Example of else statement
y = 3
if y < 0:
    print("y is negative")
elif y == 0:
    print("y is zero")
else:
    print("y is positive")
y is positive

yの値は正ですので、else文の中にあるブロックが実行されます。

複数の elif文を追加することもできます。

# Get the percentage from the user
percentage = 72

# Determine the grade based on the percentage
if percentage >= 90:
    grade = "A"
elif percentage >= 80:
    grade = "B"
elif percentage >= 70:
    grade = "C"
elif percentage >= 60:
    grade = "D"
else:
    grade = "F"

# Output the grade to the user
print(f"Your grade is: {grade}")
Your grade is: C

4 ループ

ループは、特定の条件が満たされるまでコードのブロックを繰り返し実行するために使用されます。「Python」言語には主に2つのタイプのループがあります: for ループとwhile ループです。

4.1 forループ (for loops)

配列 (sequence) (たとえば、リスト、タプル、文字列)に対してをループを行うために for ループを使用できます。

NOTE

実際のところ、一般に イテラブル (iterable) と呼ばれる配列以外のオブジェクトに対してもルーを行うことができます。しかしながら、今のところ気にする必要はありません。

forループは配列の中のアイテムが残らなくなるまで、各アイテムに対してコードのブロックを実行します。

# Example of for loop
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
apple
banana
cherry

このコードを説明してみます。

fruits = ["apple", "banana", "cherry"]: この行では、fruitsというリストを初期化しています。このリストは"apple""banana"、 そして "cherry"という3つの文字列を格納しています。

for fruits in fruits:: この行は、fruitsリストの各アイテムに対して反復を行うforループ導入しています。それぞれの反復において、各アイテムは変数 fruit に割り当てられます。

print(fruit): ループの中では、この行がfruitの値を出力します。最初のループでは、fruitには"apple"が割り当てられ、次のループでは"banana"が、そして最後のループでは"cherry"が割り当てられます。

ループが fruits リストのすべてのアイテムに対して反復を終了すると、ループは終了します。

したがってこのコードを実行すると、fruitsリスト内の各フルーツが1行ずつ出力されます。

ループ内の各アイテムのインデックスを取得したい場合は、enumerate() が便利です。

fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits):
    print(f"Fruit index {i}: {fruit}")
Fruit index 0: apple
Fruit index 1: banana
Fruit index 2: cherry

enumerate()関数は、fruits リストをループする for loop とともに使用されます。この関数を使って、fruitsリストの各要素のインデックスを参照していくことができます。ループにおける繰り返しの最中に、enumerate(fruits) は、リスト中の各アイテムのインデックスとその値を返します。

インデックスに基づいたループを実行したい場合は、range() function: を使用できます:

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

最初の行 for i in range(0、 10): からfor ループが始まります。range(0, 10) は、0 から10までの数列を生成します (ただし 10は含みません)。したがって、012345678、 そして 9の各数字にわたって、ループが行われます。各反復中に、ループは現在のインデックスを変数 i に割り当てます。

次に、print(i)iの値をコンソールに出力します。最初の反復において、i0となります。その後はi123、 …、 9と値を取ります。

辞書のアイテムを反復処理することもできます。

stocks = {"apple": 5, "banana": 3, "orange":8}
for fruit, num in stocks.items():
    print(f"{fruit}: {num}")
apple: 5
banana: 3
orange: 8

このforループはitems()メソッドを使い、stocks辞書のアイテム全体にわたってループを行います。items()メソッドは辞書のキーと値のペアを返します。ループは辞書から受け取ったキーと値のペアを分解して、fruitnumに渡します。fruitは果物の名前(キー)を、そしてnumはその量 (値)を保存します。

4.2 while ループ (while loops)

while ループは

whileループは、指定された条件がTrueである限り、コードブロックを実行するために使用されます。条件がFalseになるまで、ループ内のコードは繰り返されます。

# Example of while loop
count = 0
while count < 5:
    print(f"Count is: {count}")
    count += 1
Count is: 0
Count is: 1
Count is: 2
Count is: 3
Count is: 4

こちらのコードを細かく見てみましょう:

count = 0: この行は、変数countを値0で初期化します。この変数は、whileループ内で現在のカウントを追跡するために使用されます。

while count < 5:: while文は、その後に指定された条件がTrueである限り継続して実行されるループの一種です。この場合ループは、countの値が5未満である限り継続されます。

print(f"Count is: {count}"): whileループ内では、この行がf文字列を使用して、変数countの現在の値を出力します。

count += 1: この行はループの各繰り返しにおいて、変数countの値を 1増加させます。この変数をループ内で更新することは重要です。これにより、ループ条件(count < 5) が最終的に Falseになり、ループから抜け出します。

count の値が 5 に達すると、count < 5 の条件が Falseとなり、 ループから抜けてプログラム実行が終了します。

TIPS: forループ? それとも whileループ?

forループとwhileループのどちらを選択するか、疑問に思うかもしれません。私たちはしばしばリストのような配列データを扱います。その場合各アイテムに簡単にアクセスできるという理由で、forループを使用することができます。事前に反復回数がわからない場合や特定の条件が満たされるまで繰り返す必要がある場合は、whileループを使用します。

要するに、まず for ループを選択し、使用できない場合は while ループを選択してください。

4.3 break 文と continue

break 文を使用して、特定の条件が満たされたときにループを停止することができます。

# Using break to exit loop early
fruits = ["apple", "banana", "cherry", "", "elderberry"]
for fruit in fruits:
    if fruit == "":
        print("Empty data found!")
        break
    print(fruit)
apple
banana
cherry
Empty data found!

この例では、ループはfruitsリストを反復処理し、各フルーツを出力します。もしループが空のデータ "" に遭遇した場合、break 文が実行されてループが終了します。

ループ内で現在の反復をスキップし、残りのコードを実行せずに次の反復に進みたい場合は、continue 文が利用できます。

# Using continue to skip specific iteration
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
    if num % 2 == 0:  # Skip even numbers
        continue
    print(num)
1
3
5
7
9

この例では、ループはnumbersリストを繰り返し処理し、continue文を使用して偶数の場合は出力をスキップします。if文の条件がTrueの場合、continueが実行され、残りのコードを実行せずに次の繰り返し処理に進みます。

TIPS

  • break文は、現在のループを抜け出し、完全にループを終了するために使用されます。
  • continue文は、現在の繰り返し処理をスキップし、ループ内の残りのコードを実行せずに次の繰り返し処理に進むために使用されます。

5 Exercises