zoukankan      html  css  js  c++  java
  • 作业16

    作业16

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

    2 根据1得到的列表,取出所有人的薪资之和

    3 根据1得到的列表,取出所有的男人的名字

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

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

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

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

    # 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}的形式
    
    
    # 方法一
    with open("file1.txt","r",encoding="utf-8") as f:
        keys = ["name","sex","age","salary"]
        l = []
        for line in f:
            lis = line.strip().split(" ")
            print(lis)
            dic = {}
            a = range(4).__iter__()
            for i in lis:
                dic[keys[a.__next__()]]=i
            l.append(dic)
    print(l)
    
    
    
    # 方法二
    with open("file1.txt", "r", encoding="utf-8") as f:
        keys = ["name", "sex", "age", "salary"]
        l = []
        for line in f:
            lis = line.strip().split(" ")
            dic = {keys[i]: lis[i] for i in range(0, 4)}
            l.append(dic)
    print(l)
    
    
    
    
    
    # 2 根据1得到的列表,取出所有人的薪资之和
    salarys = sum(int(dic["salary"]) for dic in l)
    print(salarys)
    
    
    
    # 3 根据1得到的列表,取出所有的男人的名字
    males = [dic["name"]for dic in l if dic["sex"] == "male"]
    print(males)
    
    
    
    # 4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
    # 方法一
    l1 = l
    for dic in l1:
        dic["name"] = dic["name"].title()
    print(l1)
    
    
    # 方法二
    l1 = l
    g = (dic["name"].title() for dic in l1)
    for dic in l1:
        dic["name"] = g.__next__()
    print(l1)
    
    
    
    
    
    # 5 根据1得到的列表,过滤掉名字以a开头的人的信息
    l_a = [dic for dic in l if not dic["name"].startswith("a")]
    print(l_a)
    
    
    
    
    # 6 使用递归打印斐波那契数列
    # (前两个数的和得到第三个数,如:0 1 1 2 3 5 8 13 21 34...)
    
    # 分析过程
    # num1 = 0   0
    # num2 = 1   1
    # num3 = 1   num1+num2  0+1
    # num4 = 2   num2+num3  1+1
    # num5 = 3   num3+num4  1+2
    # num6 = 5   num4+num5  3+2
    # num7 = 8   num5+num6  5+3
    
    def feibo(num):
        if num == 1:
            return 0
        elif num == 2:
            return 1
        num -= 1
        return feibo(num)+feibo(num-1)
    print(feibo(10))
    
    
    
    
    # 7 一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值
    def p_int(l):
        for i in l:
            if type(i) == list:
                p_int(i)
            else:
                print(i)
    l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]]
    p_int(l)
    

    1

  • 相关阅读:
    DNS解析的并发性
    Pycharm(Jetbrains IDE)Debian buster Navigate Back/Forward (Ctrl+Alt+Left/Right)不好使的解决方法
    Linux命令行登录时的提示信息
    cmake编译Qt5
    cmake使用ccache
    bash 脚本所在文件夹
    gnome desktop
    gnome caps lock 和 num lock 键状态
    oracle 日期、月份处理
    独夜行
  • 原文地址:https://www.cnblogs.com/achai222/p/12570984.html
Copyright © 2011-2022 走看看