python学习19——课后练习
作者:互联网
# 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}的形式
infolist=[] with open('info.txt','rt',encoding='utf-8')as f: for line in f: personinfo = {} name,sex,age,salary = line.strip().split(' ') personinfo['name']=name personinfo['sex']=sex personinfo['age']=age personinfo['salary']=int(salary) infolist.append(personinfo) print(infolist) ''' 结果: [{'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得到的列表,取出所有人的薪资之和
salarys=(sal.get('salary') for sal in infolist) salarysum=sum(salarys) print(salarysum) ''' 结果: 63000 '''
# 3 根据1得到的列表,取出所有的男人的名字
menname=(i.get('name') for i in infolist if i.get('sex')=='male') print(list(menname)) ''' 结果: ['egon', 'alex'] '''
# 4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
cap=(i.get('name').capitalize() for i in infolist) print(list(cap)) ''' 结果: ['Egon', 'Alex', 'Wupeiqi', 'Yuanhao'] '''
# 5 根据1得到的列表,过滤掉名字以a开头的人的信息
no_a=(i for i in infolist if not i.get('name').startswith('a')) print(list(no_a)) ''' 结果: [{'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 4 7...)
a, b = 0, 1 while True: print(a) a, b = b, a+b
# 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 get_list(obj): for x in obj: if type(x) is list: get_list(x) else: print(x) get_list(l) ''' 结果: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 '''
标签:salary,name,get,python,age,list,sex,19,课后练习 来源: https://www.cnblogs.com/heirenxilou/p/12567756.html