• python实验10_文件与异常Ⅱ


    实验10:文件与异常(II)

    1.实验目标及要求

    (1)了解文件的分类。
    (2)掌握文件的打开模式。
    (3)掌握文本文件的读/写方法。
    (4)掌握csv文件的读/写方法。
    (5)理解异常的概念。
    (6)熟悉异常处理的步骤。
    (7)掌握文件操作异常处理的方法。

    2. 实验主要内容

    (1)读取文件 泰戈尔的诗a.txt,并跳过(不输出)文件中的注释内容和缺失值。
    代码部分:

    with open("泰戈尔的诗a.txt","r",encoding="gbk") as f:
    for line in f:
            # 切去末尾换行符
            line = line[:-1]
            if line[0] in ['1','2','3','4','5','6','7']:
                print(line)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输入:
    输出:

    1. 生如夏花之绚烂,死如秋叶之静美。
    2. 眼睛为她下着雨,心却为她打着伞,这就是爱情。
    3. 世界以痛吻我,要我报之以歌。
    4. 当你为错过太阳而哭泣的时候,你也要再错过群星了。
    5. 我们把世界看错,反说它欺骗了我们。
    6. 不要着急,最好的总会在最不经意的时候出现。

    (2)众所周知,除了喜欢打球、写作,还是葡萄酒品鉴师。
    白葡萄酒的各项指标如表10-1.
    表10-1 白葡萄酒的各项指标
    变量名 含义
    fixed acidity 固定酸度
    volatile acidity 挥发性酸度
    citric acid 柠檬酸
    residual sugar 剩余糖
    chlorides 氯化物
    free sulfur dioxide 游离二氧化硫
    total sulfur dioxide 总二氧化硫
    density 密度
    pH 值
    sulphates 酸碱盐
    alcohol 酒精
    quality 品质
    读取文件数据white_wine.csv
    (1)查看白葡萄酒总共分为几种品质等级;(2)按白葡萄酒等级将数据集划分为7个子集,并统计每种等级的数量;(3)计算每个数据集中fixed acidity的均值。
    代码部分:

    # 列出品质等级
    def quality(list):
        with open("white_wine.csv","r",encoding="utf-8") as f:
            for line in f:
                line = line[:-1]
    # 逗号处分割
                line=line.split(',')
                if line[11] in list:
                    print('品质等级为:{}'.format(line[11]))
                    list.remove(line[11])
        return
    
    # 计算每个等级的含有的数量
    def quality_sum():
        dit={}
        with open("white_wine.csv","r",encoding="utf-8") as f:
            for line in f:
                line = line[:-1]
                line=line.split(',')
                # 第一行数据跳过
                if line[11]=="quality":
                    continue
                if line[11] in dit:
                    dit[line[11]]+=1
                else:
                    dit[line[11]] = 1
        return dit
    
    # 计算每个等级的fixed acidity的总数值
    def fixed_acidity_sum():
        dit={}
        with open("white_wine.csv","r",encoding="utf-8") as f:
            for line in f:
                line = line[:-1]
                line=line.split(',')
                if line[11]=="quality":
                    continue
                if line[11] in dit:
                    dit[line[11]] += float(line[0])
                else:
                    dit[line[11]] = float(line[0])
        return dit
    
    # 计算fixed_acidity的均值
    def fixed_acidity_avg(sum1,sum2):
        dit={}
        quality_sum = sum1
        fixed_acidity=sum2
        for line in ['4', '5', '6', '7', '8', '9']:
        dit[line]=float(fixed_acidity[line])/float(quality_sum[line])
        return dit
    
    if __name__ == '__main__':
        list=['1','2','3','4','5','6','7','8','9','10']
        quality(list)
        print('每个等级的数量:',quality_sum())
        print('酸度均值:',fixed_acidity_avg(quality_sum(),fixed_acidity_sum()))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    输入:
    输出:

    品质等级为:6
    品质等级为:5
    品质等级为:7
    品质等级为:8
    品质等级为:4
    品质等级为:3
    品质等级为:9
    每个等级的数量: {'6': 1539, '5': 1020, '7': 616, '8': 123, '4': 115, '3': 14, '9': 4}
    酸度均值: {'4': 7.052173913043476, '5': 6.907843137254891, '6': 6.812085769980511, '7': 6.755844155844158, '8': 6.708130081300811, '9': 7.5}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.心得体会

    经过上一次的文件操作实验,这一次再次和文件操作相遇也就显得略显轻松了。上一次实验之后对不理解,不熟练的地方进行了巩固,所以这次实验算是靠自己解决了。读出文件中的数据一般都是str类型的,所以要进行加减乘除等数学运算的话需要强制转换一下类型,转化float或者int类型进行数学运算。最后一题来说感觉写的有点麻烦了,也是困惑我的一部分,会继续想一想怎样更简便的使用字典存储计算出(3)酸度均值的结果。

  • 相关阅读:
    as86 - 8086..80386 处理器的汇编器
    力扣——第298场周赛
    Spring WebSocket实现实时通信的详细教程
    结构思考力~结构化接收信息的三个步骤
    python学习之科学计算的jupyter安装和配置
    【学习笔记69】函数的柯里化
    使用@Builder注解后,该对象 拷贝时出现java.lang.InstantiationException异常报错
    C++ 数字记忆小游戏
    基于JAVA疫情下图书馆管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    “论数据访问层设计技术及其应用”写作框架,系统架构设计师
  • 原文地址:https://blog.csdn.net/m0_66225311/article/details/134018470