python之路--day13---函数--三元表达式,递归,匿名函数,内置函数-----练习

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 4 7...)

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

 1 data = []
 2 with open('ceshi.txt','r',encoding='utf-8') as f:
 3     for line in f:
 4         i= line.strip('\n').split(' ')
 5         dic = {
 6             'name':i[0],
 7             'sex':i[1],
 8             'age':int(i[2]),
 9             'salary':int(i[3])
10         }
11         data.append(dic)
12 
13 # [{'name': 'egon', 'sex': 'male', 'age': 18, 'salary': 3000}, \
14 #  {'name': 'alex', 'sex': 'male', 'age': 38, 'salary': 30000}, \
15 #  {'name': 'wupeiqi', 'sex': 'female', 'age': 28, 'salary': 20000},\
16 #  {'name': 'yuanhao', 'sex': 'female', 'age': 28, 'salary': 10000}]
17 
18 res=max(data,key=lambda x: x['salary'])
19 res1=min(data,key=lambda x: x['age'])
20 
21 res2=map(lambda x: {'name':x['name'].capitalize(),
22             'sex': x['sex'],
23             'age': x['age'],
24             'salary': x['salary']},
25                 data)
26 
27 
28 res3 = filter(lambda x:not x['name'].startswith('a'),data)
29 
30 
31 #非递归
32 def fib(n):
33     a,b=0,1
34     while a < n:
35         print(a,end=' ')
36         a,b=b,a+b
37     print()
38 
39 fib(10)
40 #递归
41 def fib(a,b,stop):
42     if  a > stop:
43         return
44     print(a,end=' ')
45     fib(b,a+b,stop)
46 
47 fib(0,1,10)
l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]]

def list1(x):
    for item in x:
        if  not type(item) == list:
            print(item)
        else:
           list1(item)

 

posted @ 2018-04-02 22:54  木夂口  阅读(185)  评论(0编辑  收藏  举报
levels of contents