基本的なコードの書き方がわかったので、実際に簡単なプログラムを作成してみます。
プログラムは基本的に入力に対して、計算・処理を行い、結果を出力します。
今回は簡易的なレジをつくるイメージで以下の入力・処理・出力で考えたいと思います。
入力:りんごの個数、みかんの個数
処理:りんごとみかんの個数から合計金額を計算する
出力:買い物の合計金額
目次(クリックするとジャンプします)
早速ですが、以下のようにプログラムの基本部分を作成してみました。
個数や単価を入力して、合計金額を計算して、結果を出力しています。
# りんごとみかんの個数を入力
appleCount = 2
orangeCount = 5
# りんごとみかんの単価を入力
applePrice = 200
orangePrice = 100
# りんごとみかん、それぞれの金額を計算
appleTotalprice = appleCount * applePrice
orangeTotalprice = orangeCount * orangePrice
# りんごとみかんの合計金額を計算
totalprice = appleTotalprice + orangeTotalprice
# 合計金額を出力
print(totalprice)
上のコードを実行すると、コンソールに「900」が表示されるはずです。
非常に簡単な計算ですが、これで200円のりんご2個と、100円のみかん5個の合計金額を計算するプログラムとなります。
ひとまず作成したプログラムを保存しておきます。
「File」→「Save as…」をクリックし、名前を付けて保存します。
(私はCalcPrice.pyというファイル名にしました。)
ここから、今回の簡易レジを使いやすくしたり、機能を追加して改良していきたいと思います。
まず、このままでは個数を変更するときに毎回コードを直さないといけません。
さすがに面倒なので改良します。
# りんごとみかんの個数をinput関数を使って外部(コンソール)から入力できるようにする
appleCount = input("りんごの個数を入力してください: ")
orangeCount = input("みかんの個数を入力してください: ")
applePrice = 200
orangePrice = 100
appleTotalprice = appleCount * applePrice
orangeTotalprice = orangeCount * orangePrice
totalprice = appleTotalprice + orangeTotalprice
print(totalprice)
実行すると、コンソールにinput関数で指定した文字が表示されます。
この末尾にキーボードから文字入力することができます。
実際に個数を入力すると、以下のように大量の数字が並んだ結果が出力されると思います。
このような出力になってしまう原因は・・・
input関数によって入力されたデータの型は「文字列」になるため
データには型というものがあり、文字列や整数、浮動小数点、日付など様々な種類があります。
このデータの型によって、同じ処理を行っても出力結果が変わることがあります。
実際に変数エクスプローラで型を確認すると、appleCountはstr(文字列stringの略)、applePriceはint(整数integerの略)になっていることがわかります。
今回の場合、文字列×整数となり、出力は文字列が増える形になります。
文字列と整数ではうまく計算ができないので、文字列を整数に変換します。
appleCount = input("りんごの個数を入力してください: ")
orangeCount = input("みかんの個数を入力してください: ")
applePrice = 200
orangePrice = 100
# int関数でデータの型を整数に変換
appleTotalprice = int(appleCount) * applePrice
orangeTotalprice = int(orangeCount) * orangePrice
totalprice = appleTotalprice + orangeTotalprice
# 出力も日本語を追加してわかりやすくします。
# 文字列を足し算(結合)するときはデータの型を文字列にそろえる必要があります。
# str関数でデータの型を文字列に変換
print("合計金額は" + str(totalprice) + "円です。")
もう一度実行すると、今度は正しく計算できているはずです。
これで、外部から個数を入力して、金額を計算できるプログラムになりました。
次に、3個で500円のようなセット価格を導入してみます。
appleCount = input("りんごの個数を入力してください: ")
orangeCount = input("みかんの個数を入力してください: ")
# 先ほどは計算するときに型を変換しましたが、以下のように事前に変数自体の型を変換しておくことも可能です。
appleCount = int(appleCount)
orangeCount = int(orangeCount)
applePrice = 200
orangePrice = 100
# セット価格を入力
# 変数は[,]で区切ってまとめて代入することも可能です。次の1、2行目と3行目は同じ意味です。)
appleSetcount = 3
appleSetprice = 500
orangeSetcount, orangeSetprice = 5, 450
# りんごとみかん、それぞれの金額を計算
# セット価格を考慮した計算は、個数をセット個数で割った商×セット価格+余り×単価で計算できます。
# Pythonの場合、商は[//]、余りは[%]で計算できます。
appleTotalprice = appleCount // appleSetcount * appleSetprice + appleCount % appleSetcount * applePrice
orangeTotalprice = orangeCount // orangeSetcount * orangeSetprice + orangeCount % orangeSetcount * orangePrice
totalprice = appleTotalprice + orangeTotalprice
print("合計金額は" + str(totalprice) + "円です。")
まだまだ改良の余地があるので、次回以降さらに改良していきます。