繰り返し処理は、同じ処理を何度も実行するために使われます。
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)
ループ制御: break
と continue
ループの中で特定の条件に達したときに処理を中断したりスキップしたりするために、break
や continue
を使います。
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では、例外が発生したときにその例外を捕まえて処理するために try
、except
、else
、finally
というキーワードを使います。
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
ブロックでこの例外をキャッチし、エラーメッセージを表示します。
例:else
と finally
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)
次回はこちら