目录
hasattr(),setattr(),getattr()的作用
import re :正则——指定规则,抽取数据/过滤,筛选数据
使用字典完成一个点餐系统
要求
- 实现一级菜单和二级菜单的展示,选择对应序号可以由一级菜单进入二级菜单
- 建立购物车,当有用户选择二级菜单菜品时,可以输入数量购买多个,购买的菜品及数量记录到购物车中
- 进入到二级菜单可以再切换到一级菜单,在一级菜单和二级菜单度都可以打印出购物车信息
- 无论是在一级菜单下还是二级菜单下都可以进行结算,结算时打印出购物车中的数据
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.