python 18 作业

# 作业1
'''
1、文件内容如下,标题为:姓名,性别,年纪,薪资
egon male 18 3000
alex male 38 30000
wupeiqi female 28 20000
yuanhao female 28 10000
'''
with open ('db.txt',mode='rt',encoding='utf-8') as f1:
    info_dic={}
    info_list=[]
    for line in f1:
        user_info=line.strip().split(' ')
        user_info=user_info.__iter__()
        user_name=user_info.__next__()
        user_sex=user_info.__next__()
        user_age=int(user_info.__next__())
        user_salary=int(user_info.__next__())
        info_dic={'name':user_name,'sex':user_sex,'age':user_age,'salary':user_salary}
        info_list.append(info_dic)
# print(info_list)
# 2,根据1得到的列表,取出所有人的薪资之和
sum=0
for dic in info_list:
    salary=dic['salary']
    sum+=salary
# print(sum)

#  3  根据1得到的列表,取出所有的男人的名字
man_list=[]
for dic in info_list:
    if dic['sex']=='male':
        man=dic['name']
        man_list.append(man)
# print(man_list)

# 4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
name_list=[]
for dic in info_list:
    cap_name=dic['name'].capitalize()
    name_list.append(cap_name)
# print(name_list)

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

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

def fib(n):
    if n==20:
        return
    n+=n
    n+=1
    sum=fib(n-1)
    return sum
print(fib(4))
# 7 一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值
def f1(list1):
    for x in list1:
        if type(x) is list:
            f1(x)
        else:
            print(x)

f1(l)

猜你喜欢

转载自www.cnblogs.com/Franciszw/p/12571851.html