zoukankan      html  css  js  c++  java
  • 十九次作业

    作业

    第一题

    文件内容如下,标题为:姓名,性别,年纪,薪资
    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('a') as f:
        a=(i.split() for i in f)
        res=[{'name':name,'gender':gender,'age':age,'salary':salary} for name,gender,age,salary in a]
    print(res)
    
    '''
     [{'name': 'egon', 'gender': 'male', 'age': '18', 'salary': '3000'}, 
    {'name': 'alex', 'gender': 'male', 'age': '38', 'salary': '30000'}, 
    {'name': 'wupeiqi', 'gender': 'female', 'age': '28', 'salary': '20000'},
    {'name': 'yuanhao', 'gender': 'female', 'age': '28', 'salary': '10000'}
    ]
    '''
    

    第二题

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

    print(max(res,key=lambda res:res['salary']))
    # {'name': 'alex', 'gender': 'male', 'age': '38', 'salary': '30000'}
    

    第三题

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

    print(min(res,key=lambda res:res['age']))
    # {'name': 'egon', 'gender': 'male', 'age': '18', 'salary': '3000'}
    

    第四题

    将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写

    names=['egon','alex_sb','wupeiqi','yuanhao']
    l=[]
    for i in names:
        i=i.upper()
        l.append(i)
    names = l
    print(names)
    

    第五题

    将names=['egon','alex_sb','wupeiqi','yuanhao']中以sb结尾的名字过滤掉,然后保存剩下的名字长度

    names=['egon','alex_sb','wupeiqi','yuanhao']
    
    l=[]
    for i in names:
        if i.endswith('sb'):
            names.remove(i)
    
    print(names)
    for i in names:
        l.append(len(i))
    print(l)
    
    # ['egon', 'wupeiqi', 'yuanhao']
    # [4, 7, 7]
    

    第六题

    求文件a.txt中最长的行的长度

    l=[]
    with open('a') as f:
        for line in f:
            # res = f.read()
            i = len(line)
            # print(res)
            l.append(i)
    l.sort()
    print(l[-1])
    # 24
    

    第七题

    求文件a.txt中总共包含的字符个数?思考为何在第一次之后的n次sum求和得到的结果为0?

    with open('a',mode='r',encoding='utf-8') as f:
        for line in f:
            res = f.read()
    print(res)
    print(len(res))
    # egon male 18 3000
    # alex male 38 30000
    # wupeiqi female 28 20000
    # yuanhao female 28 10000
    # 84
    

    第八题

    with open('a.txt') as f:
    g=(len(line) for line in f)
    print(sum(g)) #为何报错?

    g得到的是一个生成器,with方法会让文件关闭,然后又去打印g,g又要读写文件会进行“关闭文件的I/O操作"的报错
    

    第九题

    文件shopping.txt内容如下

    mac,20000,3
    lenovo,3000,10
    tesla,1000000,10
    chicken,200,1
    求总共花了多少钱?

    with open(r'shopping.txt', 'r', encoding='utf-8') as f:
        res = [i.strip().split(',') for i in f]
        res = sum(int(price)*int(count) for name, price, count in res)
        print(res)
    # 10090200
    

    打印出所有商品的信息,格式为[{'name':'xxx','price':333,'count':3},...]

    with open(r'shopping.txt','r',encoding='utf-8') as f:
        i = (i.strip().split(',') for i in f)
        l = list({'name':name,'price':price,'count':count} for name,price,count in i)
        print(l)
    # [{'name': 'mac', 'price': '20000', 'count': '3'},
    #  {'name': 'lenovo', 'price': '3000', 'count': '10'},
    #  {'name': 'tesla', 'price': '1000000', 'count': '10'},
    #  {'name': 'chicken', 'price': '200', 'count': '1'}]
    

    求单价大于10000的商品信息,格式同上

    with open(r'shopping.txt','r',encoding='utf-8') as f:
        i = (i.strip().split(',') for i in f)
        l = list({'name':name,'price':price,'count':count} for name,price,count in i)
        print(list(filter(lambda k:int(k['price'])>10000,l)))
    # [{'name': 'mac', 'price': '20000', 'count': '3'},
    #  {'name': 'tesla', 'price': '1000000', 'count': '10'}]
    

    第十题

    思考:判断下述说法是否正确
    题目1:
    1、应该将程序所有功能都扔到一个模块中,然后通过导入模块的方式引用它们

    不对,将所有的功能全部放进一个模块中携程面条型的程序,不仅结构混乱可读性较差,而且后期的维护工作难较麻烦,另外对于较大的项目一般都是采用分工协作,各自完成一小部分的功能,如果都放在一个模块中,难以整合。
    

    ​ 2、应该只将程序各部分组件共享的那一部分功能扔到一个模块中,然后通过导入模块的方式引用它们

    正确,将共享的功能全都放进一个模块中让大家共享使用,组织结构更加清晰,代码冗余更少
    

    题目2:
    运行python文件与导入python文件的区别是什么?

    模块文件,被当做模块给导入,有多个
    运行文件,被当做执行文件执行,只能有一个
    运行python文件的过程:先打开文件,然后发送系统调用,操作系统将硬盘存放的python文件的内容从硬盘加载到内存,Python解释器读取并运行代码,运行过程中产生的名字会存放到这个文件的名称空间中去.
    导入python文件的时候会执行导入的python文件,运行过程中产生的名字会存放到这个导入的python文件的名称空间中去
    

    运行的python文件产生的名称空间何时回收,为什么?

     当前程序运行结束后,Python文件产生的名称空间被回收
    

    导入的python文件产生的名称空间何时回收,为什么?

    如果python文件有导入python模块文件, 导入的python文件产生的名称空间就不会被关闭
    
  • 相关阅读:
    一些jquery常用方法
    如何判断js中的数据类型
    SDL结合QWidget的简单使用说明(2)
    C++引用详解
    SDL结合QWidget的简单使用说明
    Qt::浅谈信号槽连接,参数在多线程中的使用
    Qt::带返回值的信号发射方式
    Windows:子线程中创建窗口
    Qt:小项目仿QQ修改头像界面,技术点记录
    Qt::QWindow多窗口争抢置顶状态解决方案
  • 原文地址:https://www.cnblogs.com/LWX-YEER/p/12577289.html
Copyright © 2011-2022 走看看