python实验10_文件与异常Ⅱ

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

文章目录

    • 实验10:文件与异常(II)
    • 1.实验目标及要求
    • 2. 实验主要内容
    • 3.心得体会

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. 不要着急,最好的总会在最不经意的时候出现。

(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()))

输入:
输出:

品质等级为: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}

3.心得体会

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

你可能感兴趣的:(课程设计和实验报告,1024程序员节,python,开发语言,笔记,其他)