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