Pythonのプログラム制御フロー

1. if-elif-else 文の基本

ans = input("お酒を飲みましたか? (y/n): ")
if ans == 'y':
    alcohol = int(input("アルコール度数を入力してください: "))
    if alcohol < 20:
        print("運転できます")
    elif alcohol < 80:
        print("飲酒しているため、運転できません")
    else:
        print("泥酔しているため、運転禁止")
else:
    print("運転できます")

2. and を使った複数条件の判定

username = input("ユーザー名を入力してください: ")
password = input("パスワードを入力してください: ")
if username == "admin" and password == "123456":
    print("ログイン成功")
else:
    print("ユーザー名またはパスワードが間違っています")

3. or を使った複数条件の判定

score = int(input("スコアを入力してください: "))
if score < 0 or score > 100:
    print("無効なスコアです。再入力してください。")
else:
    print("あなたのスコアは:", score)

4. for ループの使用

# 文字列の文字を1つずつ出力
for ch in "range":
    print(ch)

# 10未満の偶数を判定(range(1,10)は1~9)
for num in range(1, 10):
    if num % 2 == 0:
        print(num, "は偶数です")

# 100~999の水仙花数(各桁の3乗の和が元の数に等しい)
for n in range(100, 1000):
    units = n % 10
    tens = (n // 10) % 10
    hundreds = n // 100
    sum_cubes = units**3 + tens**3 + hundreds**3
    if n == sum_cubes:
        print(n)

5. while ループの使用

# 条件が 'y' の間繰り返し
reply = input("今日は授業がありますか? (y/n): ")
while reply == 'y':
    print("授業があります")
    reply = input("今日は授業がありますか? (y/n): ")

# 1から100までの合計
total = 0
i = 1
while i <= 100:
    total += i
    i += 1
print("合計:", total)

6. while ループでユーザーログインをシミュレート

attempts = 0
while attempts < 3:
    user = input("ユーザー名を入力: ")
    pwd = input("パスワードを入力: ")
    if user == "ty" and pwd == "666666":
        print("ログイン中...")
        attempts = 4  # ループを抜けるための値
    else:
        remaining = 2 - attempts
        print(f"ユーザー名またはパスワードが間違っています。残り {remaining} 回")
        attempts += 1

if attempts == 3:
    print("3回のログインに失敗しました")

7. ネストループで長方形と三角形を出力

# 3行4列の '*' 行列
for i in range(1, 4):
    for j in range(1, 5):
        print('*', end='')
    print()

# 5行の直角三角形
for i in range(1, 6):
    for j in range(1, i + 1):
        print('*', end='')
    print()

# 逆さの直角三角形(5行)
for i in range(1, 6):
    for j in range(1, 7 - i):
        print('*', end='')
    print()

# 5行の二等辺三角形
for i in range(1, 6):
    for j in range(1, 6 - i):
        print(' ', end='')
    for k in range(1, i * 2):
        print('*', end='')
    print()

8. ネストループでひし形を出力

rows = int(input("行数を入力(奇数): "))
while rows % 2 == 0:
    print("奇数を入力してください")
    rows = int(input("行数を入力(奇数): "))

# 上半分
top = (rows + 1) // 2
for i in range(1, top + 1):
    for j in range(1, top + 1 - i):
        print(' ', end='')
    for k in range(1, i * 2):
        print('*', end='')
    print()

# 下半分
bottom = rows // 2
for i in range(1, bottom + 1):
    for j in range(1, i + 1):
        print(' ', end='')
    for k in range(1, 2 * bottom - i * 2 + 2):
        print('*', end='')
    print()

タグ: Python 制御フロー 条件分岐 ループ ネストループ

5月24日 08:09 投稿