Python3 函数小练习

本文通过几个具体的编程实例,展示了如何使用Python进行文件数据解析、列表操作、递归算法等,包括从文本文件中读取数据并转换为字典列表、找出列表中薪资最高和最年轻的人、字符串首字母大写转换、过滤特定条件的字典、打印斐波那契数列及递归遍历嵌套列表。

函数小练习

第一题

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

alpha male 18 1000
bravo male 28 2000
charlie female 38 3000
delta female 48 4000

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

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

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

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

  5. 根据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


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)

转载于:https://www.cnblogs.com/bigb/p/11587591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值