厦门醉得意点餐脚本...

这个月轮到我点餐,然后想偷懒,昨天晚上就写了这个脚本了...

  1 # coding:utf-8
  2 '''
  3 @file: 醉得意人均餐费计算.py
  4 @author: jingsheng hong
  5 @ide: PyCharm
  6 @createTime: 2019年08月14日  21点01分
  7 @contactInformation: 727803257@qq.com
  8 '''
  9 
 10 import random
 11 
 12 class Zuideyi:
 13     '''醉得意,你懂的。'''
 14 
 15     def __init__(self,total,couponMoney,everyPlanMinimalMoney,everyPlanMaximalMoney):
 16         '''
 17         :param total       就餐人数
 18         :param couponMoney 优惠券金额
 19         :param everyPlanMinimalMoney 经过小伙伴协商达成的人均最低消费金额
 20         :param everyPlanMaximalMoney 经过小伙伴协商达成的人均最高消费金额
 21         '''
 22 
 23         self.total = total
 24         self.couponMoney = couponMoney
 25         self.everyPlanMinimalMoney = everyPlanMinimalMoney
 26         self.everyPlanMaximalMoney = everyPlanMaximalMoney
 27         # 自助费= 5元/人 (该属性值暂时固定)
 28         self.supportFee = 5
 29         # 折扣率 = 实际充值金额/最终获得金额  (该属性值暂时固定)
 30         self.discountRate = 1000/1120
 31         # 菜品集合(该属性值暂时固定)
 32         self.menu = {
 33             "招牌菜":         {"酱椒片片鱼":68},
 34             "主厨推荐":       {"闽南紫菜煲":32,"得意铁锅鸡":46, "闽南醋肉":32, "肉末茄子":18, "板栗烧猪手":46},
 35             "福建菜":         {"娃娃菜蒸粉丝":22 },
 36             "川湘菜":         {"湖南辣椒炒肉":45, "麻婆豆腐":5, "干锅千叶豆腐":18, "红烧日本豆腐":19, "水煮肉片":38, "梅菜扣肉":35},
 37             "汤/蔬菜/小吃":  {"西芹淮山炒木耳":18, "上汤娃娃菜":18, "油淋芥兰":16, "有机花菜":22, "清炒时蔬":15, "干锅包菜":18,
 38                                 "苦瓜炒蛋":18, "肉沫蒸蛋":16, "香酥脆皮鸭":32, "炭烧猪颈肉":32},
 39             }
 40         # 大菜集合
 41         self.bigDish = self.menus()[0]
 42         # 小菜集合
 43         self.sideDish = self.menus()[1]
 44 
 45 
 46     def total_price_range_of_dishes(self):
 47         '''
 48         :return  可以点的菜品总价区间
 49         '''
 50         total_price_range_of_dishes = [self.everyPlanMinimalMoney*self.total/self.discountRate + self.couponMoney, self.everyPlanMaximalMoney*self.total/self.discountRate + self.couponMoney]
 51 
 52         return total_price_range_of_dishes
 53 
 54 
 55     def menus(self):
 56 
 57         '''
 58         :return 返回一个整理过的菜品集合
 59         '''
 60         # 定义单价大于等于30元的菜品为【大菜】,定义单价小于30元的菜品为【小菜】
 61         # 大菜数据集合:bigDish,小菜数据集合:sideDish
 62         bigDish  = []
 63         sideDish = []
 64         for key1,value1 in self.menu.items():
 65             for key2,value2 in value1.items():
 66                 if value2>=30:
 67                     bigDish.append({key2:value2})
 68                 else:
 69                     sideDish.append({key2:value2})
 70         dish = [bigDish,sideDish]
 71         #print(dish)
 72         return dish
 73 
 74     def amount_of_payment_of_everyOne(self,totalMoney):
 75         '''
 76         :param totalMoney  醉得意点餐菜单总金额(不扣除相关优惠券金额,但包含就餐人数的总自助费)
 77         :return  实际人均需付餐费
 78         '''
 79         amount_of_payment_zuiDeyi = (totalMoney-self.couponMoney)
 80         print("今天醉得意公众号里的会员卡扣款金额:%s"%amount_of_payment_zuiDeyi)
 81         amount_of_payment_weChat = (totalMoney-self.couponMoney)*self.discountRate
 82         print("今天微信实际支付扣款金额:%s"%amount_of_payment_weChat)
 83         amount_of_payment_of_everyOne = (totalMoney-self.couponMoney)*self.discountRate/self.total
 84         print("今天醉得意可以点的菜品总金额为%s元,点餐人数为:%s人,实际人均需付餐费:%s元" %(totalMoney,self.total,amount_of_payment_of_everyOne))
 85         return amount_of_payment_of_everyOne
 86 
 87     def chioce(self,bigDishCounts,sideDishCounts):
 88         '''
 89         :param bigDishCounts 大菜个数
 90         :param sideDishCounts 小菜个数
 91         '''
 92         a1 = random.sample(self.bigDish,bigDishCounts)
 93         b1 = random.sample(self.sideDish,sideDishCounts)
 94         neededMenu =a1+b1 # 可以点的点餐菜品
 95         totalMoney = 0    # 可以点的菜品总金额,初始值为0
 96         stringA = "" # 在微信里要写给醉得意老板的菜单
 97         for value3 in neededMenu:
 98             for key4,value4 in value3.items():
 99                 # print(value4)
100                 totalMoney = totalMoney + value4
101                 stringA = stringA + key4 + ","
102         stringA=stringA[:-1]
103         # 总菜单金额 = 总菜品金额+ 总自助费
104         totalMoney = totalMoney + self.supportFee*self.total
105         # 判断totalMoney 是否在可消费总金额区间
106         if totalMoney >= self.total_price_range_of_dishes()[0] and totalMoney <= self.total_price_range_of_dishes()[1]:
107             print("今天醉得意可以点的点餐菜品:%s"%neededMenu)
108             print("今天醉得意可以点的点餐菜品总数:%s"%(bigDishCounts+sideDishCounts))
109             print("今天可以微信里发给醉得意老板的点餐文案:--->老板娘,今天点餐人数%s,11:45可以陆续上菜,桌上饮料杯子不用放,餐桌号安排好了之后麻烦说一声。点菜菜单如下:%s"%(self.total,stringA))
110             print("今天总消费金额区间:%s"%self.total_price_range_of_dishes())
111             self.amount_of_payment_of_everyOne(totalMoney)
112             print("=================================================================================================================================================================")
113 
114 
115     def run(self):
116         # 当11个人:3个大菜,3个小菜;3个大菜,4个小菜; 3个大菜,5个小菜;3个大菜,6个小菜;3个大菜,7个小菜;   4个大菜,3个小菜;4个大菜,4个小菜; 4个大菜,5个小菜;4个大菜,6个小菜;
117         # 当10个人:3个大菜,3个小菜;3个大菜,4个小菜; 3个大菜,5个小菜;3个大菜,6个小菜;3个大菜,7个小菜;   4个大菜,3个小菜;4个大菜,4个小菜; 4个大菜,5个小菜;4个大菜,6个小菜;
118         # 当9个人:3个大菜,3个小菜;3个大菜,4个小菜; 3个大菜,5个小菜;3个大菜,6个小菜;                      2个大菜,4个小菜;2个大菜,5个小菜;2个大菜,6个小菜;2个大菜,7个小菜;
119         # 当8个人:3个大菜,2个小菜;3个大菜,3个小菜;3个大菜,4个小菜; 3个大菜,5个小菜;3个大菜,6个小菜;    2个大菜,3个小菜;2个大菜,4个小菜;2个大菜,5个小菜;2个大菜,6个小菜;
120         # 当7个人:2个大菜,3个小菜;2个大菜,4个小菜;2个大菜,5个小菜;2个大菜,6个小菜;
121         # 当6个人:2个大菜,3个小菜;2个大菜,2个小菜;2个大菜,1个小菜;   1个大菜,5个小菜;1个大菜,4个小菜;1个大菜,3个小菜;1个大菜,2个小菜;1个大菜,1个小菜;
122         if self.total == 10 or 11 :
123            self.chioce(bigDishCounts=3,sideDishCounts=3)
124            self.chioce(bigDishCounts=3,sideDishCounts=4)
125            self.chioce(bigDishCounts=3,sideDishCounts=5)
126            self.chioce(bigDishCounts=3,sideDishCounts=6)
127            self.chioce(bigDishCounts=3,sideDishCounts=7)
128            self.chioce(bigDishCounts=4,sideDishCounts=3)
129            self.chioce(bigDishCounts=4,sideDishCounts=4)
130            self.chioce(bigDishCounts=4,sideDishCounts=5)
131            self.chioce(bigDishCounts=4,sideDishCounts=6)
132 
133         if self.total == 9 :
134            self.chioce(bigDishCounts=3,sideDishCounts=3)
135            self.chioce(bigDishCounts=3,sideDishCounts=4)
136            self.chioce(bigDishCounts=3,sideDishCounts=5)
137            self.chioce(bigDishCounts=3,sideDishCounts=6)
138            self.chioce(bigDishCounts=2,sideDishCounts=4)
139            self.chioce(bigDishCounts=2,sideDishCounts=5)
140            self.chioce(bigDishCounts=2,sideDishCounts=6)
141            self.chioce(bigDishCounts=2,sideDishCounts=7)
142         if self.total == 8 :
143            self.chioce(bigDishCounts=3,sideDishCounts=2)
144            self.chioce(bigDishCounts=3,sideDishCounts=3)
145            self.chioce(bigDishCounts=3,sideDishCounts=4)
146            self.chioce(bigDishCounts=3,sideDishCounts=5)
147            self.chioce(bigDishCounts=3,sideDishCounts=6)
148            self.chioce(bigDishCounts=2,sideDishCounts=3)
149            self.chioce(bigDishCounts=2,sideDishCounts=4)
150            self.chioce(bigDishCounts=2,sideDishCounts=5)
151            self.chioce(bigDishCounts=2,sideDishCounts=6)
152            self.chioce(bigDishCounts=2,sideDishCounts=7)
153         if self.total == 7 :
154            self.chioce(bigDishCounts=2,sideDishCounts=3)
155            self.chioce(bigDishCounts=2,sideDishCounts=4)
156            self.chioce(bigDishCounts=2,sideDishCounts=5)
157            self.chioce(bigDishCounts=2,sideDishCounts=6)
158 
159 
160         if self.total == 6 :
161            self.chioce(bigDishCounts=2,sideDishCounts=3)
162            self.chioce(bigDishCounts=2,sideDishCounts=2)
163            self.chioce(bigDishCounts=2,sideDishCounts=1)
164            self.chioce(bigDishCounts=1,sideDishCounts=5)
165            self.chioce(bigDishCounts=1,sideDishCounts=4)
166            self.chioce(bigDishCounts=1,sideDishCounts=3)
167            self.chioce(bigDishCounts=1,sideDishCounts=2)
168            self.chioce(bigDishCounts=1,sideDishCounts=1)
169 
170 
171 
172 
173 if __name__ =="__main__":
174     test = Zuideyi(10,5,19,21.5)
175     test.run()

 调试结果:

原文地址:https://www.cnblogs.com/xiamen-momo/p/11355977.html