这个月轮到我点餐,然后想偷懒,昨天晚上就写了这个脚本了...
1 # coding:utf-8 2 ''' 3 @file: 醉得意人均餐费计算.py 4 @author: jingsheng hong 5 @ide: PyCharm 6 @createTime: 2019年08月14日 21点01分 7 @contactInformation: [email protected] 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()
调试结果: