Pythonの制御フローと反復処理の基礎

条件分岐

ifelifelseを用いることで、条件に応じた処理の分岐が可能になる。単一の条件にはif、二つの状況にはif-else、三つ以上の分岐にはif-elif-elseを使用する。また、条件式において空のデータ(None、空文字、空リスト、空辞書、0など)はFalseとして評価され、それ以外の非空データはTrueとして評価される。

反復処理

繰り返し処理にはfor文とwhile文を使用する。事前に繰り返し回数が明確な場合はfor文を、回数が不明で条件を満たすまで続けたい場合はwhile文を採用するのが基本である。

for文とrange関数

range関数を用いることで、指定した範囲でループ処理を行える。

# 0から2まで出力
for idx in range(3):
    print(idx, end=' ')
# 出力: 0 1 2

# 1から4まで出力
for idx in range(1, 5):
    print(idx, end=' ')
# 出力: 1 2 3 4

# 1から9まで2飛ばしで出力
for idx in range(1, 10, 2):
    print(idx, end=' ')
# 出力: 1 3 5 7 9

ループの制御とelse節

breakはループ全体を即座に終了し、continueは現在の反復をスキップして次の反復へ進む。Pythonのループにはelse節を指定でき、breakによって中断されずにループが完遂された場合のみ実行される。

secret = 7
max_tries = 3

for attempt in range(max_tries):
    guess = int(input("1から10の数字を推測してください: "))
    if guess == secret:
        print("正解です!")
        break
else:
    print("回数制限に達しました。")
# continueの動作例
for num in range(10):
    if num < 5:
        continue
    print(num, end=' ')
# 出力: 5 6 7 8 9

ネストされたループ

2次元のデータ構造を処理する際や、複雑なパターンを出力する際にネスト(入れ子)を使用する。

matrix = [[1, 2, 3], [4, 5, 6]]
for row in matrix:
    for val in row:
        print(val, end=' ')
    print()
# 出力:
# 1 2 3
# 4 5 6

図形の出力

# 直角三角形
size = 5
for i in range(1, size + 1):
    print('*' * i)
# 出力:
# *
# **
# ***
# ****
# *****

文字列の変換と反転

入力された数値の各桁を計算し、反転させる処理の例である。

raw_input = input("4桁の数字を入力: ")
transformed = ""
for char in raw_input:
    shifted = (int(char) + 5) % 10
    transformed += str(shifted)
print("変換後:", transformed)
print("反転:", transformed[::-1])

# 入力: 1234
# 変換後: 6789
# 反転: 9876

while文の活用

while文でもelse節が利用でき、breakで脱出しなかった場合に実行される。

counter = 0
while counter <= 5:
    print(counter)
    counter += 1
    break
else:
    print("ループ完遂")
# 出力: 0

長方形と逆三角形

# 長方形の出力
rows = int(input("行数: "))
cols = int(input("列数: "))
line_count = rows
while line_count > 0:
    print('#' * cols)
    line_count -= 1

# 逆三角形
max_stars = int(input("最大星数: "))
current = max_stars
while current > 0:
    print('*' * current)
    current -= 1

九九表の出力

指定した段数までの九九表を出力する処理である。

limit = int(input("何段まで出力しますか: "))
for i in range(1, limit + 1):
    for j in range(1, i + 1):
        print(f"{j}x{i}={i*j}", end='\t')
    print()

三重引用符と文字列

三重引用符('''または""")は、複数行にわたる文字列の出力や、シングルクォートとダブルクォートを混在させる際に便利である。

# 複数行の出力
print('''
複数行の
テキスト出力
''')

# クォートの混在
print("'シングルクォート'")
print('"ダブルクォート"')
print(''' "両方" '含む' ''')

無限ループと認証処理

while Trueを用いることで無限ループを作成できる。以下は、ユーザー認証をシミュレートした例である。

user_credentials = {'yamada': 1234, 'sato': 5678}
is_authenticated = False
remaining_attempts = 3

while not is_authenticated:
    username = input('ユーザー名を入力: ')
    if username in user_credentials:
        while remaining_attempts > 0:
            pwd = int(input('パスワードを入力: '))
            if pwd == user_credentials[username]:
                print('ログイン成功')
                is_authenticated = True
                break
            else:
                remaining_attempts -= 1
                if remaining_attempts > 0:
                    print(f'パスワードが間違っています。残り{remaining_attempts}回')
                else:
                    print('回数制限に達しました。プログラムを終了します。')
                    is_authenticated = True
        break
    else:
        print('ユーザーが存在しません。')

タグ: Python 制御フロー ループ処理

5月21日 04:19 投稿