zoukankan      html  css  js  c++  java
  • day19

    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}的形式
    
    # coding:utf-8
    list1 = []
    with open('a.txt', 'r', encoding='utf-8')as f:
        for line in f:
            name, sex, age, salary = line.strip().split(' ')
            dic_obj = {'name': f'{name}', 'sex': f'{sex}', 'age': f'{age}', 'salary': f'{salary}'}
            list1.append(dic_obj)
    print(list1)
    '''
    [{'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得到的列表,取出所有人的薪资之和
    res = sum(int(dic_obj['salary']) for dic_obj in list1)
    print(res)  # 63000
    
    # 3 根据1得到的列表,取出所有的男人的名字
    res1 = [dic_obj['name'] for dic_obj in list1 if dic_obj['sex'] == 'male']
    print(res1)  # ['egon', 'alex']
    
    # 4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
    # for dic_obj1 in list1:
    #     dic_obj1.update({'name': dic_obj1['name'].capitalize()})
    # res2 = [dic_obj1 for dict_obj in list1]
    # print(res2)
    # '''
    # [{'name': 'Yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'},
    # {'name': 'Yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'},
    # {'name': 'Yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'},
    # {'name': 'Yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'}]
    # '''
    
    # 5 根据1得到的列表,过滤掉名字以a开头的人的信息
    res3 = [dic for dic in list1 if not dic['name'].startswith('a')]
    print(res3)
    
    '''
    [{'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 5 8...)

    '''
    num(0) = 0
    num(1) = 1
    num(2) = 1
    num(3) = 2
    num(4) = 3
    num(5) = 5
    num(n-2) + num(n-1) = num(n)
    
    总结:
    num(n-2) + num(n-1) = num(n)
    num(0) = 0
    num(1) = 1
    '''
    list_num = []
    
    
    def num(n):
        if n == 0:
            return 0
        if n == 1:
            return 1
        elif n >= 2:
            return num(n - 2) + num(n - 1)
    
    
    def func():
        n = input('请输入斐波那契数列个数:')
        n = int(n)
        while n >= 1:
            res = num(n - 1)
            list_num.append(res)
            list_num.sort()
            n -= 1
        print(list_num)
    
    func() 
    
    结果展示:
    请输入斐波那契数列个数:8
    [0, 1, 1, 2, 3, 5, 8, 13]
    
    

    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 f1(list1):
        for i in list1:
            if type(i) is list:
                f1(i)
            else:
                print(i, end=' ')
    
    f1(l) #1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    
  • 相关阅读:
    linux 下安装nodejs,CentOS 6.5 系统
    nginx 做负载均衡
    windows 下安装nginx
    Markdown 添加空行 空格
    Latex 部分语法
    中国古代文学史——先秦(原始歌谣、神话、《诗经》、《尚书》、《春秋》、《国语》、《左传》、《战国策》、诸子散文、楚辞)
    图论学习笔记
    集合论学习笔记
    Office 365 Word 打开网上下载文件出现错误
    路径规划基础知识
  • 原文地址:https://www.cnblogs.com/xy-han/p/12568750.html
Copyright © 2011-2022 走看看