练习(掌握)
- 文件内容如下,标题为:姓名,性别,年纪,薪资
nick male 18 3000
jason male 38 30000
tank female 28 20000
sean female 28 10000
要求:
从文件中取出每一条记录放入列表中,列表的每个元素都是{'name':'nick','sex':'male','age':18,'salary':3000}
的形式
- 根据1得到的列表,取出薪资最高的人的信息
- 根据1得到的列表,取出最年轻的人的信息
- 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
- 根据1得到的列表,过滤掉名字以a开头的人的信息
- 使用递归打印斐波那契数列(前两个数的和得到第三个数,如:0 1 1 2 3 4 7...)
- 一个嵌套很多层的列表,如
l = [1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]]
,用递归取出所有的值
#1
with open('db.txt') as f:
items=(line.split() for line in f)
info=[{'name':name,'sex':sex,'age':age,'salary':salary} \
for name,sex,age,salary in items]
print(info)
#2
print(max(info,key=lambda dic:dic['salary']))
#3
print(min(info,key=lambda dic:dic['age']))
# 4
info_new=map(lambda item:{'name':item['name'].capitalize(),
'sex':item['sex'],
'age':item['age'],
'salary':item['salary']},info)
print(list(info_new))
#5
g=filter(lambda item:item['name'].startswith('a'),info)
print(list(g))
#6
#非递归
def fib(n):
a,b=0,1
while a < n:
print(a,end=' ')
a,b=b,a+b
print()
fib(10)
#递归
def fib(a,b,stop):
if a > stop:
return
print(a,end=' ')
fib(b,a+b,stop)
fib(0,1,10)
#7
l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]]
def get(seq):
for item in seq:
if type(item) is list:
get(item)
else:
print(item)
get(l)
项目(掌握)
作业需求:模拟实现一个ATM + 购物商城程序
- 额度15000或自定义
- 实现购物商城,买东西加入 购物车,调用信用卡接口结账
- 可以提现,手续费5%
- 每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息
- 支持多账户登录
- 支持账户间转账
- 记录每月日常消费流水
- 提供还款接口
- ATM记录操作日志
- 提供管理接口,包括添加账户、用户额度,冻结账户等…
- 用户认证用装饰器
示例代码:https://github.com/triaquae/py3_training/tree/master/atm
简易流程图:https://www.processon.com/view/link/589eb841e4b0999184934329