class Order:
#桌号
def __init__(self,num):
self.num=num
order_menu={} #已点过的菜品及数量
menu={'辣子鸡':39,'红烧肉':49,'麻婆豆腐':19,'酸菜鱼':59,'水煮肉片':56,'米饭':2,'鸡蛋汤':9} #菜品及其价格
Price=0 #总价格
#主菜单
def main_menu(self):
choose=input("1、点(加)菜\n2、退菜\n3、查看菜单\n4、退出\n您需要输入数字{1,2,3,4}中的一个来选择服务类型:")
if choose not in {'1','2','3','4'}:
print("输入有误,重新输入")
self.main_menu()
else:
if choose=='1':
self.order() #点(加)菜
self.main_menu()
elif choose=='2':
self.menu_back() #退菜
self.main_menu()
elif choose=='3':
self.menu_check() #查看已点菜品
self.main_menu()
elif choose=='4':
print("您已退出") #退出系统
#菜单
def menu_check(self):
print("***************")
print("*您的桌号:"+str(self.num)+'号*')
print("***************")
if not self.order_menu:
print("客官您还没点餐哦")
else:
print("您的菜单:\n---------------")
for key,value in self.order_menu.items():
print(key+str(":")+str(value)+str("份"))
print("---------------\n总价:¥"+str(self.Price))
print("---------------")
#确认选项和处理用户错误输入
#f=0表示点菜后是否继续点菜确认,f=1表示用户点菜时错误输入,f=2表示用户退菜时错误输入
def confirm_order(self,f):
if f==0:
confirm=input("您是否还需要继续点菜(是:y 否:n):")
elif f==1:
print("抱歉,客官!!!您点的菜我们没有,请您检查后重新点菜")
confirm=input("您是否还需要继续点菜(是:y 否:n):")
elif f==2:
print("您输入的退菜信息有误,请您检查后重新退菜")
confirm=input("您是否还需要继续退菜(是:y 否:n):")
if confirm not in {'y','n'}:
print("客官输入有误,请在y和n中选择一项输入")
confirm=self.confirm_order(1)
else:
if confirm=='y' and f in {0,1}:
self.order()
elif confirm=='y' and f==2:
self.menu_back()
else:
print("您已退出退菜")
#点菜功能,用户可选择菜品及数量,给出点餐总额
def order(self):
print('我们的菜单:')
for key,value in self.menu.items():
print(key+str(":¥")+str(value))
order_dish=input('请您点餐:')
if order_dish not in self.menu.keys():
self.confirm_order(1)
else:
if order_dish in self.order_menu:
dish_num=input("客官,您需要再加几份"+order_dish+":")
if not dish_num.isdigit():
self.confirm_order(2)
else:
self.Price+=int(dish_num)*self.menu[order_dish]
self.order_menu.update({order_dish:self.order_menu[order_dish]+int(dish_num)})
else:
dish_num=input("客官,您需要几份"+order_dish+":")
if not dish_num.isdigit():
self.confirm_order(2)
else:
self.Price+=int(dish_num)*self.menu[order_dish]
self.order_menu.update({order_dish:int(dish_num)})
self.confirm_order(0)
#退菜
def menu_back(self):
back_dish=input('您要退的菜品:')
if back_dish not in self.menu.keys():
self.confirm_order(2)
elif back_dish not in self.order_menu:
print("您还未点该菜品")
self.menu_check()
else:
dish_num=input('您要退掉几份'+back_dish+'(all表示全部):')
if dish_num=='all':
self.Price-=self.order_menu[back_dish]*self.menu[back_dish]
self.order_menu.pop(back_dish)
elif not dish_num.isdigit() or int(dish_num)>self.order_menu[back_dish]:
print('您输入的退菜数量有误')
self.confirm_order(2)
else:
self.Price-=int(dish_num)*self.menu[back_dish]
self.order_menu.update({back_dish:self.order_menu[back_dish]-int(dish_num)})
print('已为您退掉'+back_dish)
#选座函数
def NO():
print('我们的桌号0-10,请输入0-10之间的数字')
num=input('请您落座:')
if not num.isdigit() or int(num)>10 or int(num)<0:
print('没有该桌号,请检查后落座')
NO()
else:
return num
num=NO()
Order(num).main_menu() #用户进入程序点餐
python点菜小程序
最新推荐文章于 2024-04-11 22:00:35 发布