
【Python】exit()などでプログラムを実行停止するコード例
公開: 更新:Pythonのプログラムを実行停止させるサンプルコード
Pythonプログラムの実行を意図的に停止させるには、複数の方法があります。一般的には`exit()`関数や`sys.exit()`関数を使用することによって、プログラムの実行を任意のタイミングで終了できます。これらの関数は条件分岐と組み合わせることで、特定の条件が満たされた時にプログラムを停止する処理が実装できます。
print("プログラム開始")
x = 10
if x > 5:
print("条件を満たしたため終了します")
exit()
print("この行は表示されません")
【実行結果】
プログラム開始
条件を満たしたため終了します
行番号 | 詳細説明 |
---|---|
1行目 | プログラム開始メッセージを出力 |
2行目 | 変数xに値10を代入 |
4行目 | 変数xが5より大きいかどうかを確認する条件分岐 |
5行目 | 条件を満たした場合のメッセージを出力 |
6行目 | exit()関数を呼び出してプログラムを終了 |
8行目 | exit()関数の後に配置された処理(実行されない) |
上記の例では`exit()`関数を使用していますが、この関数はインタラクティブシェルでの使用が推奨されています。実際のプログラム内では、`sys`モジュールの`exit()`関数を使用するほうが正式な方法で、`sys.exit()`関数を使用すると終了コードを指定することも可能です。
【PR】『Python』を学べる企業・個人向けのプログラミングコース
Pythonで関数やループから途中で実行停止させるサンプルコード
Pythonではプログラム全体を終了させるだけでなく、関数やループから途中で抜け出す方法も複数あります。関数内では`return`文を使用することで、その時点で関数の実行を終了して呼び出し元に制御を戻します。また、ループ処理では`break`文を使用することで、ループから即座に抜け出すことが可能です。
def check_number(num):
if num < 0:
print("負の数は処理できません")
return False
print(f"{num}は有効な数値です")
return True
numbers = [1, 2, 3, -4, 5]
for num in numbers:
if not check_number(num):
print(f"{num}で処理を中断します")
break
print(f"{num}の処理を完了しました")
print("プログラム終了")
【実行結果】
1は有効な数値です
1の処理を完了しました
2は有効な数値です
2の処理を完了しました
3は有効な数値です
3の処理を完了しました
負の数は処理できません
-4で処理を中断します
プログラム終了
行番号 | 詳細説明 |
---|---|
1行目 | check_number関数の定義 |
2行目 | 引数numが負の数かどうかを確認する条件分岐 |
3行目 | 負の数の場合のエラーメッセージを出力 |
4行目 | 関数を終了してFalseを返す |
6行目 | 正の数の場合のメッセージを出力 |
7行目 | 関数を終了してTrueを返す |
9行目 | 処理対象の数値リストを定義 |
11行目 | 数値リストをループで処理 |
12行目 | check_number関数の戻り値がFalseの場合の条件分岐 |
13行目 | 処理中断のメッセージを出力 |
14行目 | breakでループを終了 |
15行目 | 処理完了のメッセージを出力 |
17行目 | プログラム終了のメッセージを出力 |
`return`文は関数内でのみ使用でき、関数の外で使うとエラーになります。関数内での`return`文は、値を返すだけではなく関数の実行を即座に終了させる効果もあるため、条件によって処理を分岐させる場合に役立ちます。一方、`break`文はループ構造(for文やwhile文)の内部でのみ有効です。
Pythonプログラムを強制的に実行停止させるsys.exitのサンプルコード
`sys.exit()`を使用するためには、最初に`sys`モジュールをインポートする必要があります。`sys.exit()`関数は引数として終了コードを受け取ることができ、プログラムが正常終了したか異常終了したかを呼び出し元のシステムに伝えることができます。
import sys
def process_data(data):
if not data:
print("データが空です")
sys.exit(1)
print(f"データ処理: {data}")
return True
try:
process_data("テストデータ")
empty_data = ""
process_data(empty_data)
print("この行は表示されません")
except SystemExit as e:
print(f"SystemExit例外が発生しました。終了コード: {e.code}")
print("プログラムは継続しています")
【実行結果】
データ処理: テストデータ
データが空です
SystemExit例外が発生しました。終了コード: 1
プログラムは継続しています
行番号 | 詳細説明 |
---|---|
1行目 | sysモジュールをインポート |
3行目 | process_data関数の定義 |
4行目 | データが空かどうかを確認する条件分岐 |
5行目 | 空データの場合のメッセージを出力 |
6行目 | sys.exit(1)で異常終了コード1を返してプログラムを終了 |
8行目 | データが存在する場合の処理メッセージを出力 |
9行目 | 関数を終了してTrueを返す |
11行目 | try-except文の開始 |
12行目 | 正常なデータでprocess_data関数を呼び出し |
14行目 | 空のデータを変数に代入 |
15行目 | 空データでprocess_data関数を呼び出し |
17行目 | sys.exit後の処理(実行されない) |
18行目 | SystemExit例外を捕捉して終了コードを表示 |
19行目 | プログラム継続メッセージを出力 |
`sys.exit()`は内部的に`SystemExit`例外を発生させるため、try-except文でキャッチすることが可能です。上記の例では`SystemExit`例外を捕捉して処理を継続していますが、実際のプログラムでは通常このような使い方はせず、`sys.exit()`が呼ばれたらそのままプログラムを終了させます。終了コードは慣例的に0が正常終了、それ以外(多くの場合1)が異常終了を意味します。
【PR】『Python』を学べる個人・中高生向けのプログラミングコース
Pythonで例外処理を使用して実行停止させるサンプルコード
Pythonでは例外処理を活用して、処理を制御することも可能です。`raise`文を使用して意図的に例外を発生させることによって、プログラムの流れを変更できます。例外処理を行うことによって、エラーが発生した場合でもプログラムが制御された方法で終了できます。
def divide(a, b):
if b == 0:
raise ValueError("ゼロ除算はできません")
return a / b
def calculate_values(values):
results = []
try:
for i, (a, b) in enumerate(values):
try:
result = divide(a, b)
results.append(result)
print(f"計算 {i+1}: {a} ÷ {b} = {result}")
except ValueError as e:
print(f"計算 {i+1} でエラー: {e}")
raise RuntimeError("計算を中止します") from e
except RuntimeError as e:
print(f"処理を中断: {e}")
return results
print("すべての計算が完了しました")
return results
calculations = [(10, 2), (20, 5), (30, 0), (40, 8)]
results = calculate_values(calculations)
print(f"結果: {results}")
print("プログラム終了")
【実行結果】
計算 1: 10 ÷ 2 = 5.0
計算 2: 20 ÷ 5 = 4.0
計算 3 でエラー: ゼロ除算はできません
処理を中断: 計算を中止します
結果: [5.0, 4.0]
プログラム終了
行番号 | 詳細説明 |
---|---|
1行目 | divide関数の定義 |
2行目 | 除数がゼロかどうかを確認する条件分岐 |
3行目 | ゼロ除算の場合、ValueErrorを発生させる |
4行目 | 除算結果を返す |
6行目 | calculate_values関数の定義 |
7行目 | 結果を格納するための空リストを作成 |
9行目 | 外側のtry-except文の開始 |
10行目 | 計算リストをインデックス付きでループ処理 |
11行目 | 内側のtry-except文の開始 |
12行目 | divide関数を呼び出して計算を実行 |
13行目 | 結果をリストに追加 |
14行目 | 計算結果を出力 |
15-17行目 | ValueError例外を捕捉し、RuntimeError例外に変換して再発生 |
18-20行目 | RuntimeError例外を捕捉し、処理を中断してその時点の結果を返す |
22行目 | すべての計算が完了した場合のメッセージを出力 |
23行目 | 完全な結果リストを返す |
25行目 | テスト用の計算データリストを定義 |
26行目 | calculate_values関数を呼び出して計算を実行 |
27行目 | 計算結果を出力 |
28行目 | プログラム終了メッセージを出力 |
例外処理は正常系と異常系の処理を明確に分離できるため、コードの可読性と保守性が向上します。上記の例では`ValueError`例外を`raise`してゼロ除算を検出し、その例外を`RuntimeError`に変換して上位の関数に伝播させています。これによって処理を制御された方法で中断し、その時点までの計算結果を返しています。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Python】画像認識で個数カウントをする方法
- 【Python】在庫管理システムを自作する方法
- 【Python】ChatGPTでコード生成をするプロンプトの作り方
- 【Python】pipenvでバージョン変更を行う方法
- Pythonを使ったAndroidアプリの作り方(開発方法)