3-25作业
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}的形式
1 lt1 = ['name','sex','age','salary']
2 dic2 = []
3 with open('a.txt','r',encoding='utf-8')as fr:
4 for lt2 in fr:
5 lt2 = lt2.strip().split()
6
7 dic = {k : v for k,v in zip(lt1,lt2)}
8 dic2.append(dic)
9 print(dic2)
2 根据1得到的列表,取出所有人的薪资之和
1 salary_list = [dic['salary'] for dic in dic_list]
2
3 print(sum(salary_list))
3 根据1得到的列表,取出所有的男人的名字
1 for a in info
2 for b in a
3 if a.get(b) == 'male'])
4 print([a.get('name')
4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
1 new_l=map(lambda item:
{'name':item['name'].capitalize(),'sex':item['sex'],'age':item['age'],'salary':item['salary']},l)
2
3 print(list(new_l))
5 根据1得到的列表,过滤掉名字以a开头的人的信息
1 new_info=[i for i in info if not i.get('name').startswith('a')]
2 print(new_info)
6 使用递归打印斐波那契数列(前两个数的和得到第三个数,如:0 1 1 2 3 4 7...)
1 def fib(x,y):
2 z=x+y
3 print(x,end=" ")
4 if y <= 100:
5 fib(y,z)
6
7 fib(0,1)
7 一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值
1 def f1(f):
2 for x in f:
3 if type(x) is list:
4
5 f1(x)
6 else:
7 print(x)
8
9 f1(l)