编程语言
首页 > 编程语言> > python学习19——课后练习

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