# 模拟咖啡机
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
}
}