このコンテンツには閲覧パスワードが必要です。
【アルゴリズムを学ぼう】#3 基本的なプログラムを作ってみる 2
増井 敏克著「Pythonではじめるアルゴリズム入門 伝統的なアルゴリズムで学ぶ定石と計算量」で勉強しています。
2.3 自動販売機でお釣りを計算する
ここでは、キーボードからの入力をプログラムに渡せるようにすること、不正な入力への対処方法、「リスト」の使い方について学びます。
本書では、商品価格は2,362円で、キーボードから1,000円を入力するとエラーを返すプログラムを勉強する形になっています。
が、ちょっと現実にはそんなケースはほぼないと思うので、1,000円札、500円玉、100円玉、50円玉、10円玉を投入できる自販機で120円の商品を1つ買ったときのお釣りを計算するプログラムを作っていきたいと思います。
(1)キーボードからお金を入力する
(2)リストを使ってお釣りを計算する
(3)金額が少なかったときなどのエラー処理を実装する
では、順番にプログラミングしていきます。
(1)キーボードからお金を入力する
キーボードからの入力はinput関数を使います。
商品の金額は定数で120円としておきます。
投入した金額と商品の金額を引き算してお釣りを計算して、その結果を出力します。
(2)リストを使ってお釣りを計算する
1,000円札、500円玉、100円玉、50円玉、10円玉を予めリストに入れることでプログラムがシンプルになります。
for文でリストにある金額をお釣りの金額で割った余りを求めて、返却するお札や小銭の枚数をカウントします。
(3)金額が少なかったときなどのエラー処理を実装する
エラーの処理も重要です。プログラムが間違っている「構文エラー」、プログラムは正しいけど、例えば変数の値により0で割ってしまうプログラムを組んでいた場合や、変数の型が合わなかった場合に生じる「例外」があります。
その他、構文エラーでもなく例外でもなく、見出しにあるような金額が少なくて商品が買えない場合など、予め防止しておくべき入力をさばける必要があります。
この自販機プログラムで対応すべきものとしては、
・120円より少ない金額が入力される
・1万円以上が入力される
・日本語や英語等の文字列が入力される
・カンマ付きの数字が入力される
が考えられます。
今回のプログラムのPDFです。