day19

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}的形式
# coding:utf-8
list1 = []
with open('a.txt', 'r', encoding='utf-8')as f:
    for line in f:
        name, sex, age, salary = line.strip().split(' ')
        dic_obj = {'name': f'{name}', 'sex': f'{sex}', 'age': f'{age}', 'salary': f'{salary}'}
        list1.append(dic_obj)
print(list1)
'''
[{'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'}]

'''
# 2 根据1得到的列表,取出所有人的薪资之和
res = sum(int(dic_obj['salary']) for dic_obj in list1)
print(res)  # 63000

# 3 根据1得到的列表,取出所有的男人的名字
res1 = [dic_obj['name'] for dic_obj in list1 if dic_obj['sex'] == 'male']
print(res1)  # ['egon', 'alex']

# 4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
# for dic_obj1 in list1:
#     dic_obj1.update({'name': dic_obj1['name'].capitalize()})
# res2 = [dic_obj1 for dict_obj in list1]
# print(res2)
# '''
# [{'name': 'Yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'},
# {'name': 'Yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'},
# {'name': 'Yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'},
# {'name': 'Yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'}]
# '''

# 5 根据1得到的列表,过滤掉名字以a开头的人的信息
res3 = [dic for dic in list1 if not dic['name'].startswith('a')]
print(res3)

'''
[{'name': 'egon', 'sex': 'male', 'age': '18', 'salary': '3000'}, 
{'name': 'wupeiqi', 'sex': 'female', 'age': '28', 'salary': '20000'}, 
{'name': 'yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'}]
'''

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

'''
num(0) = 0
num(1) = 1
num(2) = 1
num(3) = 2
num(4) = 3
num(5) = 5
num(n-2) + num(n-1) = num(n)

总结:
num(n-2) + num(n-1) = num(n)
num(0) = 0
num(1) = 1
'''
list_num = []


def num(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    elif n >= 2:
        return num(n - 2) + num(n - 1)


def func():
    n = input('请输入斐波那契数列个数:')
    n = int(n)
    while n >= 1:
        res = num(n - 1)
        list_num.append(res)
        list_num.sort()
        n -= 1
    print(list_num)

func() 

结果展示:
请输入斐波那契数列个数:8
[0, 1, 1, 2, 3, 5, 8, 13]

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

l =[1, 2, [3, [4, 5, 6, [7, 8, [9, 10, [11, 12, 13, [14, 15]]]]]]]

def f1(list1):
    for i in list1:
        if type(i) is list:
            f1(i)
        else:
            print(i, end=' ')

f1(l) #1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
原文地址:https://www.cnblogs.com/xy-han/p/12568750.html