2024年12月9日月曜日

Python基礎:エラー処理 (Try Except)

 今回はエラー処理について解説します

エラーは以下の2種類に分けられます。

・構文エラー
・例外エラー


構文エラー

Pythonの文法違反によるエラーで、プログラムの実行ができません。

例: 行末のコロン忘れやインデントの不正。発生すると即停止します。


例外エラー

実行時に発生するエラーで、tryとexceptを使って制御可能です。

適切に処理することでエラーの影響を回避できます。


try exceptの書き方

try: 
    処理1
    処理2
    ~
    
except エラー名:
    エラー発生時の処理
try:
    num = input("数字を入力して下さい")
    
    intData = int( num )    # 整数に変換
    data = 100 / intData    #  割り算します 
    print("結果",data)
 
except ZeroDivisionError:
    print("0で割ることはできません")
    
except ValueError:
    print("値のチェックが必要です(数字でない)")
 
except Exception as e:
    print("その他のエラー", e)


スクリプトの説明


スクリプトを詳しく見てみましょう! 「数字を入力して下さい」を表示して入力要求します、
     整数に変換、
     100で割る、
     最後に結果を表示します。

スクリプトは、入力された数字の割り算を行うというものですが、エラーをつかまえてエラー処理をおこないます。

エラーは、0割りのエラー、数字以外のエラー、その他エラーをprint文で表示しています。

つかまえるにはエラーは、

    except ZeroDivisionError
    eexcept ValueError
    eexcept Exception as e

を使います、最後のException as eの「e」変数にはエラー情報が入っています、文字列型ではないので注意して下さい。(文字列型にするには、str(e)のように文字列型にキャストします)

このコードはPythonでエラー処理を行う方法を示す例です。
コードの概要
tryブロック
    実行したい処理を記述します。ここでは、ユーザー入力を受け取り、
    それを整数に変換して100を割る計算を試みています。
exceptブロック
    特定のエラーが発生した場合に実行される処理を記述します。

処理の流れ
・ユーザーが数字を入力しない場合(例えば文字列を入力)、ValueError が発生し、
    対応するメッセージが表示されます。
・ユーザーが 0 を入力した場合、ZeroDivisionError が発生し、割り算のエラーとしてメッセージを表示します。
・それ以外の予期しないエラーが発生した場合は、Exception によってキャッチされ、
    エラー内容が表示されます。
出力例
    1. 数字を正しく入力した場合
            数字を入力して下さい: 10
            結果 10.0
    2. 0 を入力した場合
            数字を入力して下さい: 0
            0で割ることはできません
    3. 数字以外の文字列を入力した場合
           数字を入力して下さい: abc
            値のチェックが必要です(数字でない)
4. 他のエラーが発生した場合(ほとんどの場合発生しない)
            その他のエラー <エラー内容>
ポイント
    ・エラーを明確に分類して処理することで、ユーザーに適切なフィードバックを提供できます。
    ・Exception as e は、予測できないエラーの詳細を取得するのに役立ちます。



関数(消費税を求める) 関数の書き方と呼び出し方まとめ

関数(消費税を求める)


次のような関数を作成してみます。

「金額と税率を引数として渡し、支払い額と税額をタプルで返却する消費税計算関数を作成します。関数呼び出し後、結果を print 文で表示します。」

コードは次のようになります。

def get_tax( kingaku, rate=0.1 ):
 
  tax = kingaku * rate
  total = kingaku + tax
 
  return total,tax

消費税を計算する関数 get_tax を定義しています。

コード説明

引数
    kingaku: 元の金額(消費税の計算対象)
    rate: 税率(デフォルト値は 0.1 = 10%)

処理
    tax に税額を計算します: kingaku * rate
    total に支払い総額を計算します: kingaku + tax

返却値
    total(支払い総額)と tax(税額)をタプルとして返します










関数の書き方と呼び出し方まとめ

1. 関数の呼び出し方

    関数名を書き、渡したい値(引数)を括弧で囲んで渡します。

        関数名(引数1, 引数2)


2. 関数の作り方

    関数内で実行する機能を決める。

    関数を以下の形式で定義する
     (デフォルト値が設定されている引数は、省略可能)

        def 関数名(引数1, 引数2=デフォルト値, ...):
            # 処理内容
            return 戻り値


3. 関数から値を返す方法
    return を使って複数の値を返すことが可能。
    引数としてリスト型や辞書型を指定する。
    必要に応じてグローバル変数を使用する。

サンプルコード

def 計算関数(数値1, 数値2=10):
    合計 = 数値1 + 数値2
    差 = 数値1 - 数値2
    return 合計, 差

# 呼び出し例
結果 = 計算関数(20)
print(結果)  # 出力: (30, 10)