プログラミング処方箋.29 Python(レストランメニューを作ろう)
Pythonにできることの1つに、レストランのメニュー注文システムがあります。
プレビューとしては、こんな感じですね。
Python実行として必要になるプログラミングとしては、パーツがいくつかありますが、例えばこのようなパーツもあります。
プレビューとプログラミング記述を見比べると、なんとなく類似している内容であることが感じられたでしょうか。
Pythonのパーツ
Pythonのパーツとは
class
class名を名付ける。
名前はなんでもいい。
とりあえず用意する。
def
def ほにゃらら
ほにゃらら が関数。
def ほにゃらら()
def ほにゃらら(つな引き)
つな引き が引数。
M変5
M変5 が変数。
など。
結構どこにでもある変数。
名付け方は自由。
M変5.ほにゃらら
変数.つな引き
print("あいうえお" + M変5.ほにゃらら)
などとして他パーツにて、変数.関数ペアを呼び出したりする。
ときには、変数.引数ペアもあったりする。
class
とりあえずClass名前を、なにか名付けましょう。
ここではMassとしてクラスであることがわかりやすい名前にしてみました。
レストランメニューとして、『あい引』『ぷら引』があります。
『あい引』は、メニュー一覧を、
『ぷら引』は、値段を扱うための、引数です。
しばらくは土台の作成になります。
classのサブ追加
似たようなプログラミングが、2つあります。
先ほどのMassと同調するように、Fass(Mass)とあるので、
Massのサブclassが、新たなサブclass追加として、Fassになることになります。
食べ物に追加の情報(補足説明)を加えるため、メニューと値段に加えて、カロリー値も提示するようにしましょう。
これも類似の構成で、似たようなプログラミングです。
Dass(Mass)としたので、これはドリンク。飲み物に関する追加情報(補足説明)にします。
飲み物には、容量をmlとして提示するようにしました。
メニューを考える
架空のメニューを作成します。
M変として食べ物メニューですね。
()内の記述は、あい引(メニュー名前)、ぷら引(値段)、かろ引(カロリー値) の順番の通りに、それぞれ並べます。
一括してまとめるために、Mex変に収納しておきます。
M変2 = Fass などとして、変数 = classとして組み込まれています。
後に続く()は、メニューそのものの内容ですね。
D変の並びは、飲み物のメニューです。
同様に、あい引(メニュー名前)、ぷら引(値段)、りょう引(容量ml) の順番の通りに、それぞれ並べます。
一括してまとめるために、Dex変に収納しておきます。
メニューに頭番号を振る
と同時に、メニュー一覧を画面に表示させます。
indexと、FRR、またはDRRも、これらは変数です。
食べ物のほうは、かつてサブclassのところで、
class Fass(Mass):
def 追加F関(self): return self.あい引+": ¥ "+str(self.ぷら引)+"GIL ("+str(self.かろ引)+"kcal)"
とありました。
それに頭番号を振り分ける、indexが加わったことで、プレビューのような一覧表示がてきています。
プレビュー一覧画面
メニュー一覧がプレビューされている様子です。
それぞれに頭番号、メニュー名、金額、カロリー数値または容量mlが、表示されていますね。
ここから番号入力とともに注文
食べ物注文を受けるPython
プレビューでは実行を確かめるために入力が欲しいので、とにかく入力は input です。
オーダ変にて、メニューを選ぶ、int(input("最初に〜"))
セット変にて、その数を指定する、int(input("次にその〜"))
実際に見える表示の流れとしては、こんな感じです。
それぞれの行が、上からのprintに対応しています。
入力が[0,1,2,3,4,5]のどれかであり、尚且つ、注文数が3以上の場合、「入れ子 if」と呼ばれる割引きの案内も現れます。
もし入力が6だった場合、elifとして、裏メニュー:アルテマラーメンが表示されます。
飲み物注文を受けるPython
やることは同じですが、食べ物とは別の変数名を名付けて、オーダーをとります。
水オダ変にて、飲み物を選ぶ、int(input("ペアウォータ〜"))
水セト変にて、その数を指定する、int(input("次にその〜"))
飲料も流れは同じで、実際に見える表示の流れとしては、こんな感じです。
同じように、「入れ子 if」や、elifがあります。
入力が[0,1,2,3,4,5]のどれかであり、尚且つ、注文数が3以上の場合、「入れ子 if」と呼ばれる割引きの案内も現れます。
もし入力が6だった場合、elifとして、裏ドリンク:大海嘯 が表示されます。
注文のプレビュー
上から順に、
まず選択するメニューを選ぶ、input
次にその数はの、input
好みの変.あい引 として呼び出されている、牙と角のミートパイ
注文する個数は3 これはinputで入力した数
掛け算の部分。
1560 × 3=4680
4680という答えは、ゴウケイ変 に入っています。
ゴウケイ変 = 好みの変.トータル関(セット変)とあるので、
好みの変 では食べ物内の値段を認識しており、トータル関(セット変)ではトータル関の内にある、
def トータル関(self, ココ変):
TT変 = self.ぷら引 * ココ変
return TT変
『ココ変』と、『セット変』を双方に通信して、ぷら引との掛け算ができています。
最後には、3つ以上で割引きになる「入れ子 if」の発動があります。
それぞれの行が、上からのprintに対応しています。
飲み物注文プレビューと合計
最後に両方の合計をします。
食べ物の金額は、ゴウケイ変 に入っています。
飲み物の金額は、水ケイ変 に入っています。
2つをリサ変内で足して、printにて表示すると完成です。
飲み物のプレビューにおいても、食べ物の構成と同様のPythonプログラミングが作動しています。
最後に合計数値が表示されていますが、定価と3割引のそれぞれのパターンを算出するには、改善の余地が残されています。
実際のPythonコード
ここまでの全てのPythonプログラミングを繋げると、レストランの料理注文システムが完成します。
今回、食べ物と飲み物で分けましたが、どちらか1つでよければ、それはそれで余計なものを削除してプログラミングすることもできます。
Pythonレストラン
class Mass:
def __init__(self, あい引, ぷら引):
self.あい引 = あい引
self.ぷら引 = ぷら引
def みせ関(self):
return self.あい引 + ": ¥" + str(self.ぷら引)
def トータル関(self, ココ変):
TT変 = self.ぷら引 * ココ変
return TT変#defを配送するためのreturn
class Fass(Mass):
def __init__(self, あい引, ぷら引, かろ引):
super().__init__(あい引, ぷら引)
self.かろ引 = かろ引
def 追加F関(self):
return self.あい引+": ¥ "+str(self.ぷら引)+"GIL ("+str(self.かろ引)+"kcal)"
class Dass(Mass):
# __init__メソッドを定義してください
def __init__(self, あい引, ぷら引, りょう引):
super().__init__(あい引, ぷら引)
self.りょう引 = りょう引
def 追加D関(self):
return self.あい引+": ¥ "+str(self.ぷら引)+"GIL ("+str(self.りょう引)+"mL)"
M変0 = Fass(" ", 0,00)
M変1 = Fass("牙と角のミートパイ", 1560,1144)
M変2 = Fass("六々魚の刺身盛り", 2266,638)
M変3 = Fass("ラザニア", 800,410)
M変4 = Fass("おもいでのお菓子", 255,255)
M変5 = Fass("カトブレパス", 10,999)
Mex変 = [M変0,M変1, M変2, M変3, M変4,M変5]
D変0 = Dass(" ", 0,00)
D変1 = Dass("コーヒー", 350,180)
D変2 = Dass("紅茶", 220,300)
D変3 = Dass("STRONGチューハイ", 156,500)
D変4 = Dass("琥珀スープ", 134,351)
D変5 = Dass("モルボル", 100,9999)
Dex変 = [D変0,D変1, D変2, D変3,D変4,D変5]
print("食べ物メニュー")
index = 0#1からでもいい
for FRR in Mex変:#Mex変の『数振り』一覧発生
print(str(index) + ". " + FRR.追加F関())
index += 1
print("飲み物メニュー")
index = 0#1からでもいい
for DRR in Dex変:#Dex変の『数振り』一覧発生
print(str(index) + ". " + DRR.追加D関())
index += 1
print("--------------------")
print("ふつうのもじ")
print("--------------------")
#食べ物のif
オーダ変 =int(input("まず1食物を選ぶ"))
セット変 =int(input("次に2の数は"))
#食べ物のif
if オーダ変 in [0,1,2,3,4,5]:
好みの変 = Mex変[オーダ変]
ゴウケイ変 = 好みの変.トータル関(セット変)
print("選択されたメニュー: " + 好みの変.あい引)
print(好みの変.追加F関())
print("注文する個数は "+str(セット変))
print("そして3の合計は" + str(ゴウケイ変) + "GILです")
if セット変 >= 3:
わり変 = round(ゴウケイ変 * 0.8)
print("3個以上なので2割引になり"+str(わり変)+"GILになります")
elif オーダ変 == 6:
print("裏メニュー:アルテマラーメン")
else:
print("入力は0から5までです")
#水のif
水オダ変 =int(input("ペアウォータを選ぶ"))
水セト変 =int(input("次に2の量は"))
#水のif
if 水オダ変 in [0,1,2,3,4,5]:
水好み変 = Dex変[水オダ変]
水ケイ変 = 水好み変.トータル関(水セト変)
print("選択されたメニュー: " + 水好み変.あい引)
print(水好み変.追加D関())
print("注文する個数は "+str(水セト変))
print("そして3の合計は" + str(水ケイ変) + "GILです")
if 水セト変 >= 3:
水わり変 = round(水ケイ変 * 0.8)
print("3個以上なので2割引になり"+str(水わり変)+"GILになります")
elif 水オダ変 == 6:
print("裏ドリンク:大海嘯")
else:
print("入力は0から5までです")
#単発合計
リサ変 = ゴウケイ変+水ケイ変
#ルト変 = わり変+水わり変
print("合計は" + str(リサ変) + "GILです")
#print("合計は" + str(ルト変) + "GILです")