自助餐小程序。以列表、元组为存储手段,通过if语句、循环语句实现用户菜品的组合,并当用户用餐完毕后,提供价格报价,打印小票。如图1所示菜单和打印小票仅供参考。
本题以校园中的面夫子店铺为例,编写相应的代码 !编写不易,记得关注点赞收藏我哦!
代码部分:
from datetime import datetime
now = datetime.now()
# 餐厅菜品列表
dishes = [
('豆浆',2, 1),
('豆浆加糖', 2.5, 1),
('小米粥', 2.5, 1),
('紫米粥', 3, 1),
('八宝粥', 4, 1),
('鲜肉包',1.5, 1),
('卤肉包',2, 1),
('梅菜包',1.5, 1),
('麻香鸡腿包',2, 1),
('酸奶包',1.5, 1),
('茶叶蛋',2, 1),
('鸡蛋',1.5, 1),
('煎饺',2, 1),
('油条',2, 1),
('烧麦',2, 1)
]
# 用于存储订单的列表,这里使用列表嵌套元组来存储订单信息
order = []
def display_menu():
print("------------欢迎光临Caicai的面夫子!以下是餐品列表:------------")
print("1.豆浆-------2元 6.鲜肉包-----1.5元 11.茶叶蛋-------2元")
print("2.豆浆加糖-2.5元 7.卤肉包-------2元 12.鸡蛋-------1.5元")
print("3.小米粥---2.5元 8.梅菜包-----1.5元 13.煎饺---------2元")
print("4.紫米粥-----3元 9.麻香鸡腿包---2元 14.油条---------2元")
print("5.八宝粥-----4元 10.酸奶包----1.5元 15.烧麦---------2元")
print('--------------------------------------------------------------')
def order_dish(dish_num):
if dish_num in range(1, len(dishes) + 1):
dish_name = dishes[dish_num - 1][0]
price = dishes[dish_num - 1][1]
quantity = int(input('请问您要几个?'))
order.append((dish_name, price, quantity))
print(f"您已成功下单: {dish_name},数量:{quantity},总价是{price * quantity}元。")
#answer = input("是否继续点餐?(y/n)")
# if answer.lower() == 'y':
#print()
#else:
# print("感谢您的点餐!")
# return
else:
print("对不起,您输入的餐品编号不存在。")
return False
def calculate_total():
total = sum(price * quantity for dish_name, price, quantity in order)
return total
def print_receipt():
print("**************点餐信息****************")
print("名称 单价 数量 总价")
print("")
for dish_name, price, quantity in order:
print("{:<5}{:>5}元{:>7}{:>10}元".format(dish_name,price,quantity,price*quantity))
print("")
print(f"总计: {calculate_total()}元")
print("点餐时间:" ,now.strftime("%Y-%m-%d %H:%M:%S"))
print("")
print("***************************************")
print("感谢您在本店买餐!请保留此小票作为付款依据。")
def main():
display_menu()
while True:
dish_num = input("请输入您想点的餐品编号(回车结账):")
if dish_num.lower() == '':
break
elif order_dish(int(dish_num)): # 将输入的餐品编号转换为整数并进行点餐操作
pass # 如果点餐成功,则继续等待用户点餐
else:
pass # 如果点餐失败,则继续等待用户输入下一个餐品编号
print_receipt() # 当用户用餐完毕后,打印小票并报价
print(" Caicai欢迎您下次光临!")
print("***************************************")
main()
运行结果: