# 1、文件内容如下,标题为:姓名,性别,年纪,薪资
# egon male 18 3000
# alex male 38 30000
# wupeiqi female 28 20000
# yuanhao female 28 10000
#
# 要求:
# 从文件中取出每一条记录放入列表中,
# 列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式
infolist=[]
with open('info.txt','rt',encoding='utf-8')as f:for line inf:
personinfo={}
name,sex,age,salary= line.strip().split(' ')
personinfo['name']=name
personinfo['sex']=sex
personinfo['age']=age
personinfo['salary']=int(salary)
infolist.append(personinfo)print(infolist)'''结果:
[{'name': 'egon', 'sex': 'male', 'age': '18', 'salary': '3000'}, {'name': 'alex', 'sex': 'male', 'age': '38', 'salary': '30000'}, {'name': 'wupeiqi', 'sex': 'female', 'age': '28', 'salary': '20000'}, {'name': 'yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'}]'''
# 2 根据1得到的列表,取出所有人的薪资之和
salarys=(sal.get('salary') for sal ininfolist)
salarysum=sum(salarys)print(salarysum)'''结果:
63000'''
# 3 根据1得到的列表,取出所有的男人的名字
menname=(i.get('name') for i in infolist if i.get('sex')=='male')print(list(menname))'''结果:
['egon', 'alex']'''
# 4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
cap=(i.get('name').capitalize() for i ininfolist)print(list(cap))'''结果:
['Egon', 'Alex', 'Wupeiqi', 'Yuanhao']'''
# 5 根据1得到的列表,过滤掉名字以a开头的人的信息
no_a=(i for i in infolist if not i.get('name').startswith('a'))print(list(no_a))'''结果:
[{'name': 'egon', 'sex': 'male', 'age': '18', 'salary': 3000}, {'name': 'wupeiqi', 'sex': 'female', 'age': '28', 'salary': 20000}, {'name': 'yuanhao', 'sex': 'female', 'age': '28', 'salary': 10000}]'''
# 6 使用递归打印斐波那契数列(前两个数的和得到第三个数,如:0 1 1 2 3 4 7...)
a, b = 0, 1
whileTrue:print(a)
a, b= b, a+b
# 7 一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值
l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]]defget_list(obj):for x inobj:if type(x) islist:
get_list(x)else:print(x)
get_list(l)'''结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15'''