Python プログラム 高専3年生

【Python】Python言語入門⑤~繰り返し処理~

繰り返し処理は、同じ処理を何度も実行するために使われます。

Pythonでは、while文とfor文を使って繰り返し処理を行うことができます。

ここでは、while文、無限ループ、for文について詳しく説明し、例題を交えてわかりやすく解説します。

while

while文は、指定した条件がTrueである間、繰り返し処理を行う文です。

条件がFalseになると繰り返しが終了します。

while 条件:
    # 条件がTrueの間、繰り返し実行する処理

例: 1から5までの数字を出力する

i = 1
while i <= 5:
    print(i)
    i += 1  # iに1を加えることで条件が変わる

無限ループ

無限ループは、条件が常にTrueのため、永遠に終了しない繰り返しです。

通常、プログラムが終了しないエラーとなるため、無限ループを回避するための条件変更やbreakを使うことが重要です。

プログラムを停止したい場合はコンソール上でCtrl+Cキーで停止できます。

while True:
    print("これは無限ループです")
    break  # この行がないと無限に繰り返される

for

for文は、シーケンス(リスト、文字列、タプルなど)の要素を順番に取り出して繰り返し処理を行います。

while文とは異なり、繰り返し回数が事前にわかっている場合に使うことが多いです。

for 変数 in シーケンス:
    # シーケンスの要素ごとに繰り返し実行する処理

例: リストの要素を出力する

fruits = ["りんご", "バナナ", "ぶどう"]

for fruit in fruits:
    print(fruit)

range()for

range()関数を使うと、指定した範囲の数値を繰り返し処理できます。

range()は、指定した開始値から終了値(終了値は含まれない)までの数列を生成します。

例: 1から5までの数字を出力する

for i in range(1, 6):
    print(i)

例: range() でステップ数を指定する

for i in range(0, 10, 2):  # 0から10未満まで、2ずつ増加
    print(i)

ループ制御: breakcontinue

ループの中で特定の条件に達したときに処理を中断したりスキップしたりするために、breakcontinue を使います。

break

break文を使うと、ループを途中で終了できます。

例: 数字が3のときにループを終了する

for i in range(1, 6):
    if i == 3:
        break  # 3のときにループを終了
    print(i)

continue

continue文を使うと、ループのその回の残りの処理をスキップし、次の繰り返しに移ります。

例: 数字が3のときに表示をスキップする

for i in range(1, 6):
    if i == 3:
        continue  # 3のときはスキップ
    print(i)

例外処理

例外処理は、プログラムの実行中に発生する予期しないエラーや問題に対処するための仕組みです。

たとえば、ファイルが存在しない場合にファイルを開こうとしたり、ゼロで割ろうとしたりするとエラーが発生します。

これらのエラーが発生すると、通常プログラムは停止しますが、例外処理を使うことでエラーを検知し、プログラムが停止せずに適切な処理を行うことができます。

Pythonでは、例外が発生したときにその例外を捕まえて処理するために tryexceptelsefinally というキーワードを使います。

try:
    # 例外が発生するかもしれない処理
except 例外の種類:
    # 例外が発生した場合の処理
else:
    # 例外が発生しなかった場合の処理
finally:
    # 例外の有無にかかわらず必ず実行される処理
  • tryブロック: 例外が発生する可能性のあるコードをここに書きます。
  • exceptブロック: tryブロックで例外が発生した場合に、その例外を処理します。特定の例外を指定することも、全ての例外をまとめて処理することも可能です。
  • elseブロック: tryブロックで例外が発生しなかった場合に実行される処理です(必須ではありません)。
  • finallyブロック: 例外の有無に関わらず、必ず最後に実行される処理です(必須ではありません)。

例: ゼロ除算(ZeroDivisionError)を例外処理する

try:
    a = 10
    b = 0
    result = a / b
except ZeroDivisionError:
    print("ゼロで割ることはできません。")
  • b = 0 でゼロ除算が行われると ZeroDivisionError が発生します。
  • exceptブロックで ZeroDivisionError がキャッチされ、"ゼロで割ることはできません。" というメッセージが表示されます。
  • この処理をしない場合、プログラムはエラーを起こして停止しますが、例外処理を使うことで停止せずにメッセージを出力して続行できます。

例:ファイルの読み込みエラー(FileNotFoundError)

try:
    f = open("non_existent_file.txt", "r")  # 存在しないファイルを開く
except FileNotFoundError:
    print("ファイルが見つかりませんでした。")
  • open() 関数で存在しないファイルを開こうとすると FileNotFoundError が発生します。
  • exceptブロックでこの例外をキャッチし、エラーメッセージを表示します。

例:elsefinally

try:
    number = int(input("数字を入力してください: "))  # ユーザーに数値を入力させる
except ValueError:
    print("数値ではありません。")
else:
    print("入力された数字は:", number)
finally:
    print("プログラムが終了しました。")
  • tryブロックでは、ユーザーからの入力を数値として変換しようとします。数値以外が入力されると ValueError が発生します。
  • exceptブロックでは、ValueError が発生した場合に「数値ではありません」と表示します。
  • elseブロックは、例外が発生しなかった場合に実行され、入力された数字を表示します。
  • finallyブロックは、例外の有無にかかわらず必ず最後に実行されるため、「プログラムが終了しました。」というメッセージが常に表示されます。

複数の例外を処理する

複数の種類の例外を処理したい場合、exceptブロックを複数用意することができます。

try:
    a = int(input("1つ目の数値を入力してください: "))
    b = int(input("2つ目の数値を入力してください: "))
    result = a / b
except ValueError:
    print("入力された値は数値ではありません。")
except ZeroDivisionError:
    print("ゼロで割ることはできません。")
else:
    print("計算結果は:", result)
  • ValueError は、数値ではないデータが入力された場合に発生します。
  • ZeroDivisionError は、b にゼロが入力された場合に発生します。
  • elseブロックは、どちらのエラーも発生しなかった場合に実行され、割り算の結果を表示します。

raise 文による例外の明示的な発生

時には、プログラム内で自分で例外を発生させたい場合があります。このような場合は、raise 文を使います。

def divide(a, b):
    if b == 0:
        raise ValueError("ゼロで割ることはできません。")
    return a / b

try:
    result = divide(10, 0)
except ValueError as e:
    print(e)
  • raise文を使って、b == 0 の場合に ValueError を発生させます。
  • 例外が発生したとき、そのメッセージを exceptブロックで表示します。

例外処理を適切に使うことで、プログラムが予期せぬエラーでクラッシュするのを防ぎ、エラーに柔軟に対処することができます。

課題1

while文を使って、10から1までカウントダウンし、最後に「終了」と表示するプログラムを作成しなさい。

解答例はこちらをクリック
i = 10
while i > 0:
    print(i)
    i -= 1  # iを1ずつ減らす
print("終了")

課題2

for文を使って、1から50までの数のうち、偶数の合計を計算して表示するプログラムを作成しなさい。

解答例はこちらをクリック
total = 0
for i in range(1, 51):
    if i % 2 == 0:  # 偶数かどうかを確認
        total += i  # 偶数を合計に加算
print("1から50までの偶数の合計は:", total)

課題3

for文を使って、1から10までの数字を出力するプログラムを作りなさい。

ただし、数字が5のときだけはスキップする(表示しない)ようにしなさい。

解答例はこちらをクリック
for i in range(1, 11):
    if i == 5:
        continue  # 5のときはスキップ
    print(i)

課題4

while文を使って、ユーザーに数値を入力させ、入力された数が10以上であればループを終了するプログラムを作りなさい。

終了時に「終了します」と表示しなさい。

解答例はこちらをクリック
while True:
    number = int(input("数値を入力してください: "))
    if number >= 10:
        print("終了します")
        break  # 入力が10以上ならループを終了

課題5

for文を使って、以下のような三角形の形を表示するプログラムを作成しなさい。

高さは5段とします。

*
**
***
****
*****
解答例はこちらをクリック
for i in range(1, 6):  # 1から5までの数字を使う
    print('*' * i)  # '*'をi回繰り返して表示

課題6

1から100までの数値の中から、3の倍数だけを出力するプログラムを作成しなさい。

解答例はこちらをクリック
for i in range(1, 101):
    if i % 3 == 0:  # 3で割り切れるか確認
        print(i)

課題7

ユーザーから5つの数値を入力してもらい、その数値の平均を計算して表示するプログラムを作りなさい。

解答例はこちらをクリック
total = 0
for i in range(5):  # 5回繰り返す
    num = float(input(f"{i+1}つ目の数値を入力してください: "))
    total += num  # 入力された数値を合計に加える

average = total / 5  # 合計を5で割る
print("入力された数値の平均は:", average)

次回はこちら

Follow me!

-Python, プログラム, 高専3年生
-, ,

PAGE TOP