例外処理

Pythonでは、除算やファイル処理などの操作をとても簡単に行えます。しかし、プログラムの実行中にエラーが起き、突然プログラムが停止してしまうことがあります。そこで、例外処理が役立ちます。Pythonでは、tryexceptブロックを使って例外を処理します。例外が発生する可能性のある操作はtryブロック内に書き、例外を処理するコードはexceptブロック内に書きます。
簡単な除算の例を見てみましょう:
a = int(input())
b = int(input())
print(a / b)
print('The program continues...')
入力に102を与えると、プログラムは5.0The program continues...を表示します。しかし、100を入力すると、プログラムは停止し、ZeroDivisionError: division by zeroというエラーメッセージを表示します。
このエラーを処理するには、例外処理を使うことができます:
try:                       # ブロック内の操作を試みる
    a = int(input())
    b = int(input())
    print(a / b)
except ZeroDivisionError:  # ZeroDivisionErrorが発生した場合の処理
    print('Error: Division by zero is not allowed.')

print('The program continues...')
これで、入力に100を与えると、Error: Division by zero is not allowed.The program continues...が表示されます。
同様に、入力が整数でない場合に発生するValueErrorなどの他の例外も処理できます。そのために、別のexceptブロックを追加できます:
try:
    a = int(input())
    b = int(input())
    print(a / b)
except ZeroDivisionError:
    print('Error: Division by zero is not allowed.')
except ValueError:
    print('Error: Input is not a valid integer.')
このように、さまざまな種類の例外を処理するために必要なだけ多くのexceptブロックを追加できます。これにより、プログラムがエラーで突然停止するのを防ぎ、ユーザーに役立つメッセージを提供できます。
💡
重要なのは、exceptブロックの順序が重要であることです。 Pythonは、発生したエラーの型と一致する最初のexceptブロックを実行します。どのexceptブロックとも一致しない場合、エラーは処理されません。
また、一行で複数の例外を捕捉することもできます:
try:
    a = int(input())
    b = int(input())
    print(a / b)
except (ZeroDivisionError, ValueError) as e:
    print('Error:', e)
ここで、eには発生した例外のインスタンスが入ります。
例外処理を活用することで、Pythonプログラムをより堅牢で使いやすくすることができます。

チャレンジ:長方形の面積

入力から2つの浮動小数点数を読み込みます。これらの数値hwは、長方形の高さと幅を表します。あなたのタスクは、長方形の面積を計算して表示することです。
しかし、すべての入力が正しい数値であるとは限りません。hまたはwのどちらかが数値でない場合、例外を処理してThe input is not a numberと表示する必要があります。
入力の最初の行には高さhが、2行目には幅wが含まれます。
プログラムは、入力が正しい数値であれば長方形の面積を一行で表示し、どちらかまたは両方の入力が正しい数値でない場合はThe input is not a numberと表示する必要があります。
入力
出力
5.2 7.8
40.56
3.7 abc
The input is not a number
abc 5.5
The input is not a number
abc def
The input is not a number
: 入力が数値である場合、それらは正の数のみが含まれます。
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue