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)

 

posted @ 2020-03-25 19:21  Only-W  阅读(152)  评论(0编辑  收藏  举报