Python 例外処理 練習問題 try except

python

Pythonの例外処理の練習問題【try-except文の使用】

2020年3月28日

今回はPythonの例外処理(特にtry-except文を使用した)の練習問題になります。

Pythonの例外処理については、以下の記事を参考にして下さい。

関連記事
Python 例外処理 try, except else finally 使い方
Pythonの例外処理【try,except文の扱い方について】

続きを見る

 

【try-except文】Pythonの例外処理の練習問題【病院での患者の点滴、薬の投与】

Python 例外処理 練習問題 try except

病院での薬の投与を題材に try-except 文を学んでいきたいと思います。

 

課題のイメージは下記図になります。

Python 例外処理 練習問題 try except

病院での患者の点滴、薬の投与の流れ

 

きちんとエラー処理がされずに、「投与ミス」「2重投与」など医療ミスが起きうる状態と、その対策についてPythonで確認していきましょう。

 

あくまで課題ですので、実際の現場のシステムとは違う点はご了承ください。

 

仕様(実装手順)

Python 例外処理 練習問題 try except

仕様(実装手順)は以下です。

 

 仕様(実装手順)

  1. 以下表の当日の投与リストを作成する。
  2. 薬を検索する関数の作成する。
  3. search_medicineを使って、患者ID’111’の薬検索。結果を表示する。
  4. search_medicineを使って、患者ID’333’の薬検索。結果を表示する。
  5. search_medicineで検索時にtry文を使ってでエラー対策を行う。
    exceptにpassを使う。
    患者ID’333’で検索する。
  6. search_medicine検索のエラー対策を行う。
    exceptで検索エラー表示、elseの正常時のみprintで薬の種類、薬の量表示する。
    患者ID ‘111’と’333’で検索する。
  7. search_medicineの中で、検索できない場合はraise Exception(‘メッセージ’)を使ってエラーを発生処理を追加する。
  8. 患者ID’333’で検索して確認する。
  9. today_listから投与後の対象患者データ削除する関数を作成する。
  10. registerを使って、患者ID’111’を削除。today_listを表示する。
  11. 患者ID’333’を関数を使って削除、today_listを表示する。
    リストから削除できないので、2重投与の恐れがある。
  12. register関数内で、registerで削除処理しない場合には、raise Exception(‘メッセージ’)を使ってエラーを発生処理を追加する。
  13. register関数使用時もtry文でエラー処理を追加。exceptでエラー名を表示。患者ID’333’で登録処理する。

 

以下、当日の投与リストの表になります。

患者ID 333 だけエラー発生用に数値で登録されたとします。

 

患者ID薬の種類薬の量
‘111’‘A’100
‘222’‘B’50
333‘B’80
‘444’‘C’120

では cording を行う際の各々のステップについて、見ていきましょう。

 

step
1
薬検索関数の作成

  • 関数名: search_medicine
  • 引数:患者ID
  • 返り値:薬種類、薬の量

step
2
search_medicineを使って、患者ID’111’の薬検索。結果を表示

step
3
search_medicineを使って、患者ID’333’の薬検索。結果を表示

step
4
search_medicineで検索時にtry文を使ってでエラー対策、exceptにpassを使う。患者ID’333’で検索

投与ミスが起きうるコードになります。

step
5
search_medicine検索のエラー対策

exceptで検索エラー表示、elseの正常時のみprintで薬の種類、薬の量表示。患者ID ‘111’と’333’で検索

step
6
raise Exception(‘メッセージ’)を使ってエラーを発生処理を追加

エラー名がわかりにくいので、search_medicineの中で、検索できない場合はraise Exception(‘メッセージ’)を使ってエラーを発生処理を追加

step
7
患者ID’333’で検索して確認

step
8
today_listから投与後の対象患者データ削除する関数を作成

  • 関数名:register
  • 引数:患者ID

step
9
registerを使って、患者ID’111’を削除。today_listを表示

step
10
患者ID’333’を関数を使って削除、today_listを表示

リストから削除できないので、2重投与の恐れがあるので注意。

step
11
register関数内で、registerで削除処理しない場合には、raise Exception(‘メッセージ’)を使ってエラーを発生処理を追加

step
12
register関数使用時もtry文でエラー処理を追加。exceptでエラー名を表示。患者ID’333’で登録処理。

 

演習方法1 | 自分で全てcordingを行う

Python 例外処理 練習問題 try except

課題と仕様(実装手順)を見て、自身でコーディングしてみてください。

 

コーディングに不安な方は、演習方法2のコードの穴埋めにて演習を実施してください。

 

演習方法2 | google drive を利用する

Python 例外処理 練習問題 try except

— コード追加 — に1行ずつコードを埋めていって、プログラムを完成させてください。

 

演習のJupyter notebookをご利用される方は演習(google driveリンク)を参照いただければと思います。

 

STEP1:以下表の当日の投与リストを作成

下記リスト使用してください。

 

STEP2:薬検索関数の作成

 

STEP3:search_medicineを使って、患者ID’111’の薬検索。結果を表示


出力例

 

STEP4:search_medicineを使って、患者ID’333’の薬検索。結果を表示

出力例。これではエラーが発生してしまいますね

 

STEP5:search_medicineで検索時にtry文を使ってでエラー対策、exceptにpassを使う。患者ID’333’で検索

投与ミスが起きうるコードになります。

出力例

 

STEP6:search_medicine検索のエラー対策。
exceptで検索エラー表示、elseの正常時のみprintで薬の種類、薬の量表示。患者ID ‘111’と’333’で検索

出力例

 

STEP7:エラー名がわかりにくい。
search_medicineの中で、検索できない場合はraise Exception(‘メッセージ’)を使ってエラーを発生処理を追加

 

 

STEP8:患者ID’333’で検索して確認

出力例です。文言は各自自由に設定です

 

STEP9:today_listから投与後の対象患者データ削除する関数を作成

補足! リストから削除する remove関数 は同じ内容を削除します。

ですので多次元のリストは多次元の内容を remove関数 に渡す必要があります。

下記コードで再確認してみましょう。

 

 

STEP10:registerを使って、患者ID’111’を削除。today_listを表示

出力例

 

STEP11:患者ID’333’を関数を使って削除、today_listを表示

リストから削除できないので、2重投与の恐れがある

出力例

 

STEP12:register関数内で、registerで削除処理しない場合には、raise Exception(‘メッセージ’)を使ってエラーを発生処理を追加

 

STEP13:register関数使用時もtry文でエラー処理を追加。exceptでエラー名を表示。患者ID’333’で登録処理。

出力例です。文言は自由に設定してください。

 

解答例

Python 例外処理 練習問題 try except

解答例(google driveリンク)を参照いただければと思います。

 

STEP1 :以下表の当日の投与リストを作成

下記リスト使用してください。

 

STEP2:薬検索関数の作成

 

STEP3:search_medicineを使って、患者ID’111’の薬検索。結果を表示

 

STEP4:search_medicineを使って、患者ID’333’の薬検索。結果を表示

 

STEP5:search_medicineで検索時にtry文を使ってでエラー対策、exceptにpassを使う。患者ID’333’で検索

投与ミスが起きうるコードになります。

 

STEP6:search_medicine検索のエラー対策。
exceptで検索エラー表示、elseの正常時のみprintで薬の種類、薬の量表示。患者ID ‘111’と’333’で検索

 

STEP7:エラー名がわかりにくいので、search_medicineの中で、
検索できない場合はraise Exception(‘メッセージ’)を使ってエラーを発生処理を追加

 

STEP8:患者ID’333’で検索して確認

 

STEP9:today_listから投与後の対象患者データ削除する関数を作成

 

STEP10:registerを使って、患者ID’111’を削除。today_listを表示

 

STEP11:患者ID’333’を関数を使って削除、today_listを表示

リストから削除できないので、2重投与の恐れがある。

 

STEP12:register関数内で、registerで削除処理しない場合には、raise Exception(‘メッセージ’)を使ってエラーを発生処理を追加

 

STEP13:register関数使用時もtry文でエラー処理を追加。exceptでエラー名を表示。患者ID’333’で登録処理。

 

まとめ|Pythonの例外処理の練習問題【try-except文の使用】

Python 例外処理 練習問題 try except

Pythonの例外処理を用いた練習問題を行いました。

 

try except文の理解を十分にしておく事が非常に重要ですので、途中でつまづいた方は再度以下のPythonの例外処理の記事を読み直す様にして下さい。

 

関連記事
Python 例外処理 try, except else finally 使い方
Pythonの例外処理【try,except文の扱い方について】

続きを見る

 

今回は以上となります。

 

 

人気記事 機械学習は挫折しやすい【←挫折が多い原因と挫折回避の方法を教えます】

人気記事 無料あり:機械学習エンジニアの僕がおすすめするAI(機械学習)特化型プログラミングスクール3社


-python
-, ,

Copyright© Tommy blog  , 2024 All Rights Reserved.