python编程:实现自助点餐小程序,包括自定义菜单,点餐,账单,结算等功能

【题目】实现自助点餐小程序,要求满足以下要求:

       用户可以通过输入菜名和价格自定义菜单,并将定义的菜单显示出来。接下来,用户可通过输入菜单中菜品的名称进行点餐,,用户点餐完成后提交,显示出用户点餐后的账单,账单中要包含用户点的菜单(菜名和价格) 及最后的总价。

【分析】

     这个题目主要是考察的是python基础知识的使用,包括if语句,循环语句,字典,用户输入等的使用,是python基础的一个比较综合的的使用,其中一个的难点就是如何规范化输出,使得输出的信息比较整齐。

【编程实现】

menus = {}
#自定义菜单,用字典存储,输入ok结束
while(True):
    menu = input('please input menus(ex:name,price),finished with ok:')
    if menu!='ok':
        menu = menu.split(",")
        menus[menu[0]] = int(menu[1])
    elif menu.strip() == '':
        print('please input the right menu!')
    else:
        break

width = 40  #设置显示列的宽度为20个字符
print('The menus is:')
print('='*width,'Menus','='*width)  #字符乘以一个数字表示该字符重复几次
print('name'.center(width),'price'.center(width),sep='')
for key in menus.keys():#循环打印出菜单 控制输出的格式,对齐

    print(' '*int(width/2-2),key.ljust(int(width/2+2),' '),str(menus.get(key)).center(width),sep='')

print('='*(width-2),'Menus end','='*(width-2))  #字符乘以一个数字表示该字符重复几次
#用户点餐,输入菜单上的菜名,输入ok停止
print('start to order:')
user_menu = {} #用户点的菜
while(True):
    name = input('please input name,finished with ok:')
    if name != 'ok':
        if name in menus.keys():#菜单中有这个菜
            user_menu[name] = user_menu.get(name,0)+1  #记录菜被点的次数,一个菜可点多个
        else: #不在菜单中则提示
            print('please input the right name in the Menus!')
    else: #输入ok则点餐完成
        break

#显示账单
print('your order is'.center(width*2))
print('name'.ljust(width),'price'.ljust(width),sep='')
print('='*(width*2))  #字符乘以一个数字表示该字符重复几次
total_price = 0
for key in user_menu.keys():#循环打印出菜单 控制输出的格式,对齐
    amount = user_menu.get(key,1)
    price = amount*menus.get(key)
    total_price += price
    print((key+'*'+str(amount)).ljust(width), str(price).ljust(width), sep='')

print('='*(width*2))  #字符乘以一个数字表示该字符重复几次
print('total'.ljust(width),str(total_price).ljust(width),sep='')

 结果显示:

猜你喜欢

转载自blog.csdn.net/c1007857613/article/details/128218429
今日推荐