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

时间:2023-03-08 22:43:00
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]]]]]]],用递归取出所有的值

 data = []
with open('ceshi.txt','r',encoding='utf-8') as f:
for line in f:
i= line.strip('\n').split(' ')
dic = {
'name':i[0],
'sex':i[1],
'age':int(i[2]),
'salary':int(i[3])
}
data.append(dic) # [{'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}] res=max(data,key=lambda x: x['salary'])
res1=min(data,key=lambda x: x['age']) res2=map(lambda x: {'name':x['name'].capitalize(),
'sex': x['sex'],
'age': x['age'],
'salary': x['salary']},
data) res3 = filter(lambda x:not x['name'].startswith('a'),data) #非递归
def fib(n):
a,b=0,1
while a < n:
print(a,end=' ')
a,b=b,a+b
print() fib(10)
#递归
def fib(a,b,stop):
if a > stop:
return
print(a,end=' ')
fib(b,a+b,stop) 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)