こんにちはベッチです。
昨日出張で大阪に行ってきました。
大阪っぽい食事をしたかったのですが事前調査など全くしていなかった結果、大阪駅近くにある「新梅田食堂街」という所にある「梅田木曽路」という居酒屋ランチを食べる事にしました。
バイキング形式で550円でした。
安い。
ただし、安いバイキングという事で独自のルールが課せられます。
以下がそのルールです。
いやー、ルールがやかましいですね!
でもコストパフォーマンス優れてる事考えれば特に気になりません。
ただし、ルール守らないとちょっとこわいおばちゃんに叱られます。
気になる方は是非行ってみて下さい。
という前置きはさておき、この梅田木曽路のバイキングルールをPythonで実装してみました。
module.py
#!/usr/bin/python # -*- coding: utf-8 -*- MAX_COUNT = 1 # おかわりは1回まで AMOUNT_SMALL = '少なめ' AMOUNT_REGULAR = '普通' FOOD_RICE = 'ごはん' FOOD_MISO_SOUP = 'みそ汁' FOOD_SIDE_DISH = 'おかず' FOOD_FRUITS = 'フルーツ' FOOD_OMELET = '玉子焼' class Food: def __init__(self, name, amount, human): self._name = name # 名前(ごはん、みそ汁、おかず、フルーツ、玉子焼) self._count = 0 # おかわり回数 self._amount = amount # 量 self._first_amount = amount # 量 self._human = human # 食べる人 def get_name(self): return self._name def set_name(self, name): self._name = name def del_name(self): del self._name name = property(get_name, set_name, del_name) def get_count(self): return self._count def set_count(self, count): self._count = count def del_count(self): del self._count count = property(get_count, set_count, del_count) def get_amount(self): return self._amount def set_amount(self, amount): self._amount = amount def del_amount(self): del self._amount amount = property(get_amount, set_amount, del_amount) def get_first_amount(self): return self._first_amount def set_first_amount(self, first_amount): self._first_amount = first_amount def del_first_amount(self): del self._first_amount first_amount = property(get_first_amount, set_first_amount, del_first_amount) def get_human(self): return self._human def set_human(self, human): self._human = human def del_human(self): del self._human human = property(get_human, set_human, del_human) class Human: def __init__(self, name): self._name = name # 名前 self._lunch = [] def get_name(self): return self._name def set_name(self, name): self._name = name def del_name(self): del self._name name = property(get_name, set_name, del_name) def get_lunch(self): return self._lunch def set_lunch(self, lunch): self._lunch = lunch def del_lunch(self): del self._lunch lunch = property(get_lunch, set_lunch, del_lunch) # 最初の準備をする def ready(self, name, amount): food = Food(name, amount, self) self.lunch.append(food) print name + 'を準備しました' return food # 食べる def eat(self, food): print food.name + 'を食べます' if food.human != self: print '[店員]自分のものは自分で食べなさいよ!' return if food.amount is None: print '[店員]' + food.name + '食べたければ自分で準備しなさいよ!' print food.name + 'を食べました' food.amount = None # おかわり def get_seconds(self, food, amount): food.count = food.count + 1 print food.name + 'のおかわりをします' for my_food in self.lunch: if my_food.name is food.name: if my_food != food: print '[店員]器は最初に用意したものをつかってくれ!' return if food.name == FOOD_OMELET: print '[店員]' + food.name + 'はおかわりできないよ!' return if food.name == FOOD_SIDE_DISH: for my_food in self.lunch: if my_food.name == FOOD_RICE and my_food.first_amount == AMOUNT_SMALL: print '[店員]最初のごはんの量が少ないからおかずのおかわりはできないよ!' return if food.count > MAX_COUNT: print '[店員]' + food.name + 'のおかわりは既に一回してるだろ!' return if not food.amount is None: print '[店員]全部食べきってからじゃないとおかわりできないよ!' return food.amount = amount print food.name + 'のおかわりをしました' self.eat(food) # 帰る def go_back(self): for my_food in self.lunch: if not my_food.amount is None: print '[店員]' + my_food.name + 'がまだ残っているわよ!' return print 'ごちそうさまでした'
kisojiLunch.py
#!/usr/bin/python # -*- coding: utf-8 -*- if __name__ == "__main__": import module betchi = module.Human('betchi') rice = betchi.ready(module.FOOD_RICE, module.AMOUNT_SMALL); miso_soup = betchi.ready(module.FOOD_MISO_SOUP, module.AMOUNT_REGULAR); side_dish = betchi.ready(module.FOOD_SIDE_DISH, module.AMOUNT_REGULAR); omelet = betchi.ready(module.FOOD_OMELET, module.AMOUNT_REGULAR); betchi.eat(rice) betchi.get_seconds(rice, module.AMOUNT_REGULAR) betchi.eat(miso_soup) betchi.eat(side_dish) betchi.get_seconds(side_dish, module.AMOUNT_REGULAR) betchi.eat(omelet) betchi.get_seconds(omelet, module.AMOUNT_REGULAR) betchi.go_back()
pythonが実行できる環境で「python kisojiLunch.py」ってやってもらえれば実行できます。
実行結果はこんな感じです。
ごはんを準備しました みそ汁を準備しました おかずを準備しました 玉子焼を準備しました ごはんを食べます ごはんを食べました ごはんのおかわりをします ごはんのおかわりをしました ごはんを食べます ごはんを食べました みそ汁を食べます みそ汁を食べました おかずを食べます おかずを食べました おかずのおかわりをします [店員]最初のごはんの量が少ないからおかずのおかわりはできないよ! 玉子焼を食べます 玉子焼を食べました 玉子焼のおかわりをします [店員]玉子焼はおかわりできないよ! ごちそうさまでした
みなさんもたまには身の回りのものを実装してみてはいかがでしょうか。
それでは良い週末を。