【Python】exit()などでプログラムを実行停止するコード例

【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やプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する