python字典基础应用:制作一个披萨点餐流程

要求

  1. 定义菜单,字典格式{披萨种类名称:原材料};
  2. 给顾客展示菜单,并让顾客输入选择,加入判断语句检查顾客是否输入正确;
  3. 问顾客是否额外需要添加材料;
  4. 让顾客确认菜单;

分步实现

  1. 定义一个字典类型“menu”,存放我们的披萨种类和原料;
    定义一个字符串数组“add_menu”,存放可添加的食材;
menu = { "香甜玉米披萨"  :"菠萝、玉米、沙拉酱",
         "奥尔良鸡肉披萨" :"秘制奥尔良鸡肉、青椒、洋葱、进口芝士",
         "超级至尊披萨"   :"培根、火腿、鸡肉、牛肉粒、青椒、玉米、洋葱、黑橄榄、芝士"}
add_menu = ['芝士','洋葱','培根','榴莲','火腿']
  1. 展示菜单
print("本店的菜单如下:")
print(menu)
运行结果:

本店的菜单如下:
{‘香甜玉米披萨’: ‘菠萝、玉米、沙拉酱’, ‘奥尔良鸡肉披萨’: ‘秘制奥尔良鸡肉、青椒、洋葱、进口芝士’, ‘超级至尊披萨’: ‘培根、火腿、鸡肉、牛肉粒、青椒、玉米、洋葱、黑橄榄、芝士’}

  1. 让顾客输入选择
order = input("请输入您想要的披萨:")
  1. 判断顾客的点单是否正确
    我们可以使用语句“order in menu.keys()”来判断输入的“order”是否在“menu”的“key”属性里。如果在的话,语句将会返回“True”,否则返回“False”。 因此我们可以利用 if语句 来判断输入是否正确,不正确的话就重新输入。
if order in menu.keys():
    print("您的点单正确!")
else:
    order = input("您输入的披萨名称有误! 请您重新输入:")

但是其中存在一个问题,这一条 if语句 仅能判断一次正误,假如顾客第二次点单时仍然输入错误的披萨名称,后续流程仍是无法进行的。
因此,我们可以使用 while()循环,直到顾客输入的披萨名称在我们的菜单内(如果输入不在我们的菜单内,则一直执行点单流程,否则,不作处理。):

while(order not in menu.keys()):
    order = input("您输入的披萨名称有误! 请您重新输入:")
  1. 询问顾客对添加食材的需求
    直接使用 if语句 来判断顾客需求,如果需要添加,则展示可添加菜单,并让用户输入想要添加的食材,否则不作处理:
temp = input("请问您是否想要继续添加材料?[是/否]")
if temp == '是':
    print("可供添加的食材菜单如下:")
    print(add_menu)
    add = input("请输入您想要添加的食材:")
  1. 订单确认
    当完成上述全部流程后,进行订单确认,可以展示“披萨名称”、“披萨原材料”、“添加的食材”(未选择添加则不展示)。在此,我们选择格式化输出使其更加规范:
print("您所点的 “{ordering}”,它的原料为:{material},添加的食材为:{addition}。"
          .format(ordering=order, material=menu.get(order),addition=add))
print("您所点的 “{ordering}”,它的原料为:{material}。"
          .format(ordering=order, material=menu.get(order)))

完整代码

menu = { "香甜玉米披萨"  :"菠萝、玉米、沙拉酱",
         "奥尔良鸡肉披萨" :"秘制奥尔良鸡肉、青椒、洋葱、进口芝士",
         "超级至尊披萨"   :"培根、火腿、鸡肉、牛肉粒、青椒、玉米、洋葱、黑橄榄、芝士"}
add_menu = ['芝士','洋葱','培根','榴莲','火腿']
print("本店的菜单如下:")
print(menu)

order = input("请输入您想要的披萨:")

while(order not in menu.keys()):
    order = input("您输入的披萨名称有误! 请您重新输入:")

temp = input("请问您是否想要继续添加材料?[是/否]")
if temp == '是':
    print("可供添加的食材菜单如下:")
    print(add_menu)
    add = input("请输入您想要添加的食材:")
    print('[订单确认]')
    print("您所点的 “{ordering}”,它的原料为:{material},添加的食材为:{addition}。"
          .format(ordering=order, material=menu.get(order),addition=add))
else:
    print("您所点的 “{ordering}”,它的原料为:{material}。"
          .format(ordering=order, material=menu.get(order)))
print("后厨已收到您的订单,请稍等,祝您 用餐愉快!")

运行结果

本店的菜单如下:
{‘香甜玉米披萨’: ‘菠萝、玉米、沙拉酱’, ‘奥尔良鸡肉披萨’: ‘秘制奥尔良鸡肉、青椒、洋葱、进口芝士’, ‘超级至尊披萨’: ‘培根、火腿、鸡肉、牛肉粒、青椒、玉米、洋葱、黑橄榄、芝士’}
请输入您想要的披萨:奥利给
您输入的披萨名称有误! 请您重新输入:老八秘制小汉堡
您输入的披萨名称有误! 请您重新输入:奥尔良鸡肉披萨
请问您是否想要继续添加材料?[是/否]是
可供添加的食材菜单如下:
[‘芝士’, ‘洋葱’, ‘培根’, ‘榴莲’, ‘火腿’]
请输入您想要添加的食材:培根、洋葱
[订单确认]
您所点的 “奥尔良鸡肉披萨”,它的原料为:秘制奥尔良鸡肉、青椒、洋葱、进口芝士,添加的食材为:培根、洋葱。
后厨已收到您的订单,请稍等,祝您 用餐愉快!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值