大数据Python基础学习——练习(二)

目录

使用字典完成一个点餐系统

要求

 判断两个函数的区别

lambda,reduce的应用

reduce,map,filter,sorted的应用

按照字典的值进行排序

Python中的类,实例,封装,继承和多态

Python中的内置模块和第三方模块

自定义一个包 

打印函数的执行时间

isinstance的应用

hasattr(),setattr(),getattr()的作用

对类中绑定的属性做一个限制

鸭子类型 

import re :正则——指定规则,抽取数据/过滤,筛选数据


 

使用字典完成一个点餐系统

要求

  1. 实现一级菜单和二级菜单的展示,选择对应序号可以由一级菜单进入二级菜单
  2. 建立购物车,当有用户选择二级菜单菜品时,可以输入数量购买多个,购买的菜品及数量记录到购物车中
  3. 进入到二级菜单可以再切换到一级菜单,在一级菜单和二级菜单度都可以打印出购物车信息
  4. 无论是在一级菜单下还是二级菜单下都可以进行结算,结算时打印出购物车中的数据
def show_shop_car(shop_car):
    n = 1
    dicts = {}
    print('序号 商品名称 商品单价 商品数量 商品总价')
    total_price = 0
    for goods_name, goods_info in shop_car.items():
        goods_price = goods_info[1]
        goods_num = goods_info[0]
        per_price = goods_info[2]
        print('{}     {}    {}元      {}    {}元'.format(n, goods_name, goods_price, goods_num,
                                                        per_price).center(
            len('序号 商品名称 商品单价 商品数量 商品总价'), ' '))
        total_price+=per_price
        dicts[n] = goods_name
        n+=1
    print('总价:{}元'.format(total_price))

    return dicts
def input_option(values,shop_cars):
    if values == 'q':
        show_shop_car(shop_cars)
        global flag1
        flag1 = 2
    elif values == 'w':
        return
    elif values == 'c':
        goods_name_to_goods_info = show_shop_car(shop_cars)
        change_choice1 = int(input('选择要修改的商品序号'))
        goods_name = goods_name_to_goods_info[change_choice1]
        goods_info = shop_cars[goods_name]
        change_choice2 = int(input('修改输入1 删除输入2'))
        global shop_car
        if change_choice2==1:
            change_choice2 = int(input('输入购买数量'))
            goods_info[0] = change_choice2
            goods_info[2] = change_choice2*goods_info[1]
            shop_car[goods_name] = goods_info
        elif change_choice2==2:
            shop_car.pop(goods_name)
        return 2
    else:
        return 1


dicts = {
    '1':{'主食':{'包子':1,'鳗鱼饭':10,'拉面':12,'清汤挂面':4}},
    '2':{'凉菜':{'天妇罗':5,'寿司':2,'皮蛋豆腐':3,'雷焦茄子':3,'三色丸子':1}},
    '3':{'热菜':{'蛋包饭':10,'火锅':20,'大阪烧':11,'炸猪排':13,'八珍豆腐':100}}
}
shop_car = {}
flag1 = 1

while flag1 == 1:
    for num,second_dict in dicts.items():
        print(num,list(second_dict.keys())[0])
    choice_first_menu = input('请选择序号 q 结算退出c查看购物车并修改')
    result = input_option(choice_first_menu, shop_car)
    if not result or result==2:
        continue

    third_dict=list(dicts[choice_first_menu].values())[0]
    n = 1
    choice_to_dict = {}
    for goods_name,goods_price in third_dict.items():
        print(n, goods_name, goods_price, '元')
        choice_to_dict[n]=goods_name
        n+=1

    while True:
        choice_second_menu = input('请选择序号 q 结算退出 w 返回上级 c查看购物车并修改')
        result = input_option(choice_second_menu, shop_car)
        if not result:
            break
        elif result==2:
            continue
        choice_second_menu = int(choice_second_menu)
        goods_name = choice_to_dict[choice_second_menu]
        goods_price=third_dict[goods_name]
        goods_num = int(input('请输入购买数量'))
        shop_car.update({goods_name:[goods_num,goods_price,goods_num*goods_price]})
        print('购买成功')

 判断两个函数的区别

def hello():
    def aaa(j):
        def bbb():
            return j**j
        return bbb()
    f = []
    for i in range(1,4):
        f.append(aaa(i))
    return f
f1,f2,f3 = hello()
print(f1,f2,f3)
结果
1 4 27

def world():
    f = []
    for i in range(1,4):
        def aaa():
            return i*i
        f.append(aaa)
    return f
f1,f2,f3 = world()
print(f1(),f2(),f3())
结果
9 9 9

注:在world()函数中,调用f1()或f2()或f3()的过程中,最初循环所得出的结果3在最开始就已经赋值给了f的列表,之后才调用aaa()这个函数,所以得出的结果都是9;
    在hello()函数中,首先定义的是aaa()的函数,之后每循环一遍将i的值传递一遍,得出的结果才是1,2,27.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值