Python函数练习题

Python学习 2024-06-27 15:39:00 阅读 94

第一题

现有文件info.txt, 其内容如下:

alpha male 18 1000

bravo male 28 2000

charlie female 38 3000

delta female 48 4000

从文件中取出每一条记录放入列表中,列表的每个元素都是{'name':'alpha','gender':'male','age':18,'salary':1000}的形式

  1. 根据1得到的列表,取出薪资最高的人的信息
  2. 根据1得到的列表,取出最年轻的人的信息
  3. 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
  4. 根据1得到的列表,过滤掉名字以a开头的人的信息

# 1

info_list = []

with open('info.txt', 'rt', encoding='utf-8') as f:

for line in f:

info_split_list = (line.strip().split(' '))

name, gender, age, salary = info_split_list

info_dict = {'name': name, 'gender': gender, 'age': age, 'salary': salary}

info_list.append(info_dict)

print(info_list)

# 2

max_salary_info = max(info_list, key=lambda dic: dic['salary'])

print(max_salary_info)

# 3

min_age_info = min(info_list, key=lambda dic: dic['age'])

print(min_age_info)

# 4

new_info_list = map(lambda dic: {'name': dic['name'].capitalize(),

'gender': dic['gender'],

'age': dic['age'],

'salary': dic['salary']}, info_list)

print(list(new_info_list))

# 5

res = filter(lambda dic: dic['name'][0] != 'a', info_list)

print(list(res))

第二题

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

num1 = 0

num2 = 1

num = 0

#Python学习交流群:153708845

def fibo(end):

'''斐波那契数列'''

global num1, num2, num

print(num)

num1 = num2

num2 = num

num = num1 + num2

if num > end:

return

func(end)

func(20)

第三题

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

def get(lis):

for i in lis:

if type(i) == list:

get(i)

else:

print(i)

get(l)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。