python课后题答案刘卫国_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 inf:

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 ininfolist)

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 ininfolist)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

whileTrue: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]]]]]]]defget_list(obj):for x inobj:if type(x) islist:

get_list(x)else:print(x)

get_list(l)'''结果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值