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


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

      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()

     调试结果:

  • 相关阅读:
    白话LINQ系列2以代码演进方式学习LINQ必备条件
    《Entity Framework 6 Recipes》中文翻译系列 (9) 第二章 实体数据建模基础之继承关系映射TPH
    Linq To Sqlite 一一二二
    《Entity Framework 6 Recipes》中文翻译系列 (10) 第二章 实体数据建模基础之两实体间Isa和Hasa关系建模、嵌入值映射
    《Entity Framework 6 Recipes》中文翻译系列 (14) 第三章 查询之查询中设置默认值和存储过程返回多结果集
    《Entity Framework 6 Recipes》中文翻译系列 (13) 第三章 查询之使用Entity SQL
    白话LINQ系列1什么是LINQ?
    《Entity Framework 6 Recipes》翻译系列 (3) 第二章 实体数据建模基础之创建一个简单的模型
    JS 实现trim()
    mysql表切换引擎的几种方法
  • 原文地址:https://www.cnblogs.com/xiamen-momo/p/11355977.html
Copyright © 2020-2023  润新知