python模拟咖啡机程序

# 模拟咖啡机
from lists import menuCoffe

totalWater = 1500   #初始化咖啡机的水量
totalMilk = 1000    #初始化咖啡机的牛奶量
totalCoffe = 500    #初始化咖啡机的咖啡量
totalCoin = 0       #咖啡机已经收到的硬币
pswd = "123456"     #管理员的密码,输入可加入配料
isOff = False       #关机标记

while not isOff:
    inputCoffe = input("你要哪种咖啡?\n(1)蒸馏咖啡\n(2)拿铁\n(3)卡布奇诺\n")
    chosenCoffe = ""
    paySum = 0      #初始化用户的支付总额
    isPayFinish = False     #支付完毕标记
    while inputCoffe != "off" and inputCoffe != "check" and inputCoffe != pswd and inputCoffe != "1" and inputCoffe != "2" and inputCoffe != "3":
        inputCoffe = input("你要哪种咖啡?\n(1)蒸馏咖啡\n(2)拿铁\n(3)卡布奇诺\n")    #如果输入不合法,提示继续输入
    match inputCoffe:
        case "off":     #输入off关机
            print("关机")
            isOff = True
        case "check":       #输入check显示当前配料的剩余量
            print(f"剩余水量{totalWater}ml\n剩余牛奶{totalMilk}ml\n剩余咖啡{totalCoffe}g\n硬币总额{totalCoin}")
        case _:
            if inputCoffe == pswd:  #输入密码,则可以加入配料
                addWater = int(input("请输入加水量(ml)\n"))
                totalWater += addWater
                addMilk = int(input("请输入加牛奶量(ml)"))
                totalMilk += addMilk
                addCoffe = int(input("请输入加咖啡量(g)"))
                totalCoffe += addCoffe
                print(f"添加完毕\n剩余水量{totalWater}ml\n剩余牛奶{totalMilk}ml\n剩余咖啡{totalCoffe}g")
                continue
            match inputCoffe:
                case "1":
                    chosenCoffe = "蒸馏咖啡"
                case "2":
                    chosenCoffe = "拿铁"
                case "3":
                    chosenCoffe = "卡布奇诺"
            coffeCount = int(input("请问您要点几份?"))
            if menuCoffe[chosenCoffe]["配料"]["水"] < totalWater and menuCoffe[chosenCoffe]["配料"]["牛奶"] < totalMilk and menuCoffe[chosenCoffe]["配料"]["咖啡"] < totalCoffe:
                print(f'您点的是{chosenCoffe},请支付${menuCoffe[chosenCoffe]["售价"]*coffeCount}')    #当剩余配料足够时,提示用户支付
                while not isPayFinish:
                    payCoin = input("请投币(p/n/d/q),结束投币请按f,退款请按o")
                    while payCoin != "p" and payCoin != "n" and payCoin != "d" and payCoin != "q" and payCoin != "f" and payCoin != "o":
                        payCoin = int(input("请投币(p/n/d/q),结束投币请按f,退款请按o"))      #检测用户的投币
                    match payCoin:  #每次投币都提示用户已经支付的金额
                        case "p":   #假设1p=$0.1
                            paySum += 0.1
                            print(f"您已投入硬币${paySum}")
                        case "n":
                            paySum += 0.5
                            print(f"您已投入硬币${paySum}")
                        case "d":
                            paySum += 1
                            print(f"您已投入硬币${paySum}")
                        case "q":
                            paySum += 2
                            print(f"您已投入硬币${paySum}")
                        case "o":
                            print(f"退还您${paySum},欢迎再来")
                            break
                        case "f":   #输入f结束投币,若支付额大于等于总价,结束支付,反之提示继续投币
                            if paySum >= menuCoffe[chosenCoffe]["售价"]*coffeCount:
                                totalWater -= menuCoffe[chosenCoffe]["配料"]["水"]*coffeCount      #咖啡机的配料减去对应的消耗量
                                totalMilk -= menuCoffe[chosenCoffe]["配料"]["牛奶"]*coffeCount
                                totalCoffe -= menuCoffe[chosenCoffe]["配料"]["咖啡"]*coffeCount
                                print(f'收到${paySum},找零${paySum - menuCoffe[chosenCoffe]["售价"]*coffeCount}\n请收好您的{chosenCoffe}')
                                totalCoin += menuCoffe[chosenCoffe]["售价"]*coffeCount    #硬币存量增加
                                isPayFinish = True      #本次支付结束,开始下次循环
                            else:
                                print(f'您的投币总额为${paySum},还差${menuCoffe[chosenCoffe]["售价"]*coffeCount - paySum}')
                    if paySum >= menuCoffe[chosenCoffe]["售价"]*coffeCount:
                        totalWater -= menuCoffe[chosenCoffe]["配料"]["水"]*coffeCount
                        totalMilk -= menuCoffe[chosenCoffe]["配料"]["牛奶"]*coffeCount
                        totalCoffe -= menuCoffe[chosenCoffe]["配料"]["咖啡"]*coffeCount
                        print(f'收到${paySum},找零${paySum - menuCoffe[chosenCoffe]["售价"]*coffeCount}\n请收好您的{chosenCoffe}')
                        totalCoin += menuCoffe[chosenCoffe]["售价"]*coffeCount
                        isPayFinish = True
            else:   #储存的配料不足以做出用户点的咖啡
                if menuCoffe[chosenCoffe]["配料"]["水"]*coffeCount > totalWater:
                    print("水不够了!")
                if menuCoffe[chosenCoffe]["配料"]["牛奶"]*coffeCount > totalMilk:
                    print("牛奶不够了!")
                if menuCoffe[chosenCoffe]["配料"]["咖啡"]*coffeCount > totalCoffe:
                    print("咖啡不够了!")

下面为menuCoffe

menuCoffe = {
    "蒸馏咖啡": {
        "配料": {
            "水": 50,
            "牛奶": 0,
            "咖啡": 18
        },
        "售价": 1.5
    },
    "拿铁": {
        "配料": {
            "水": 200,
            "牛奶": 150,
            "咖啡": 24
        },
        "售价": 2.5
    },
    "卡布奇诺": {
        "配料": {
            "水": 250,
            "牛奶": 100,
            "咖啡": 24
        },
        "售价": 4
    }
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值