day14作业

作业

  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}的形式

  1. 根据1得到的列表,取出薪资最高的人的信息

  2. 根据1得到的列表,取出最年轻的人的信息

  3. 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式

  4. 根据1得到的列表,过滤掉名字以a开头的人的信息

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

  6. 一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值

# 
file = "user_info.txt"
user_list = []
with open(file,"r") as fr:
    for i in fr:
        user_dict = {}
        name, sex, age, salary = i.strip().split()
        user_dict["name"] = name
        user_dict["sex"] = sex
        user_dict["age"] = age
        user_dict["salary"] = salary
        user_list.append(user_dict)
print(user_list)

# 根据1得到的列表,取出薪资最高的人的信息
def max1(item):
    return item["salary"]

print(max(user_list,key=max1))

# 匿名函数实现
print(max(user_list,key=lambda x:x["salary"]))




# 根据1得到的列表,取出最年轻的人的信息
def min1(item):
    return item["age"]

print(min(user_list,key=min1))

# 匿名函数实现
print(min(user_list,key=lambda x:x["age"]))




# 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
def upper1(item):
    return item["name"].capitalize()	# capitalize函数可以将字符串首字母变大写,其余字母变小写
		# title 函数 标题化,也可以将首字母大写,其余字母小写

res = map(upper1,user_list)
print(list(res))

res = map(lambda x:x["name"].capitalize(),user_list)
print(list(res))




# 根据1得到的列表,过滤掉名字以a开头的人的信息
def filter1(item):
    for i in item:
        return item["name"].startswith("a")

res = filter(filter1,user_list)
print(list(res))

# 匿名函数实现
res = filter(lambda x:x["name"].startswith("a"),user_list)
print(list(res))





# 使用递归打印斐波那契数列(前两个数的和得到第三个数,如:0 1 1 2 3 5 8 ...)
def f1(a,b,n):
    if a > n:
        return
    while a < n:
        print(a, end=" ")
        a,b = b,a+b
    f1(a,b,n)
f1(0,1,10)





# 一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值

# 首先 先观察。。。一个一个循环取值。。。,然后用递归实现
for i in l:
    print(i)
    if type(i) == list:
        for j in i:
            print(j)
            if type(j) == list:
                for k in j:
                    print(k)
                    if type(k) == list:
                        for a in k:
                            print(a)
                            if type(a) == list:
                                for b in a:
                                    print(b)
                                    if type(b) == list:
                                        for c in b:
                                            print(c)
                                            if type(c) == list:
                                                for d in c:
                                                    print(d)
                                                    if type(d) == list:
                                                        for e in d:
                                                            print(e)
                                                            
                                                            
                                                            
# 递归实现
def func(x):		# 形参也是列表
    for i in x:
        if type(i) == list:			# 中间判断循环的元素是不是列表
            func(i)					# 如果元素是列表,就要再次循环该值取出元素里的每个值
        else:
            print(i)			# 如果不是列表直接打印值
func(l)		# 实参填列表
posted @ 2019-09-25 19:46  GeminiMp  阅读(138)  评论(0)    收藏  举报