练习题 _递归和内置函数

  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}的形式

2、根据1得到的列表,取出薪资最高的人的信息

3、根据1得到的列表,取出最年轻的人的信息

4、根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式

5、根据1得到的列表,过滤掉名字以a开头的人的信息

6、使用递归打印斐波那契数列(前两个数的和得到第三个数,如:0 1 1 2 3 5 8...)

7、一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值

import copy

list1 = ['name','sex','age','salary']
list2 = []
with open('num_info.txt','r',encoding='utf8') as fr:
    list0 = fr.read().split('\n')
    # print(list0)
    for i in list0:
        u_info = i.split(' ')
        dic = {k:v for k,v in zip(list1,u_info)}
        list2.append(dic)
# 1、得到元素是字典的列表
print(list2)  
# 2、
print(max(list2,key=lambda dic:dic['salary']))
# 3、
print(min(list2,key=lambda dic:dic['age']))
# 4、
list3 = copy.deepcopy(list2)
for i in list3:
    i['name'] = i['name'].capitalize()
print(list3)

res = map(lambda item:item['name'].capitalize(),list3)
print(list(res))
5、
res2 = filter(lambda item:item['name'].startswith('a'), list2)
print(list(res2))
# 6、
def func(a,b,n):
    if b > n:
        return
    print(a,end=' ')
    func(b,a+b,n)
func(0,1,50)
# 7
l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]]
def fun(lis):
    for i in lis:
        if type(i) is list:
            fun(i)
        else:
            print(i,end=' ')
get(l)

猜你喜欢

转载自www.cnblogs.com/allenchen168/p/11588285.html