• python 实验7


    姓名:轨迹

    学号:6666

    专业年级:2021级软件工程 

    班级:  66

    实验的准备阶段

    (指导教师填写)

    课程名称

    Python开发与应用

    实验名称

    文件异常应用

    实验目的

    1)掌握基本文件读写的方式;

    2)掌握csv文件的读写;

    3)掌握try-except-else语句的用法,自定义异常捕获异常。

    实验内容

    1)使用read() , readLines() , readLine()读取一个文本文件,并打印;

    2)以字典格式读取csv文件并打印;

    3)自定义异常并抛出。

    实验类型

    (打R)

    □验证性    □演示性     R设计性      £综合性

    实验的重点、难点

    实验重点:文件读取、异常

    实验难点:字典格式读取文件

    实验环境

    Python 3.8以上版本,pycharm+anaconda等集成开发环境

    实验的实施阶段

    实验步骤及实验结果

    1、实验题目:文件读取

    将StudentInfo中的信息以字典的形式存储在列表里。

    [{'学号': '1445204009', '姓名': '王召', '平时成绩': '100', '期末成绩': '90'},

     {'学号': '1445204013', '姓名': '林锦', '平时成绩': '95', '期末成绩': '67'}

     ...

    ]

    源代码:

    import csv

    with open('D:\\StudentInfo.csv','r',encoding="utf-8-sig") as f:
        reader = csv.DictReader(f)
        a =
    list(reader)
       
    print(a)

    列出测试数据和实验结果截图:

    2、实验题目:字典格式读取文件

    现有一个user.csv文件,内容如下:

    name,username,email

    杨洋,yangy,yangy@sina.com

    贾子豪,jiazh,jiazh@126.com

    于飞,yuf,yuf@163.com

    田宇辰,tianych,tianych@sina.com

    1)以字典格式读取csv文件并打印出每个人的名字和电子邮件地址

    import csv

    with open('D:\\user.csv','r',encoding="utf-8-sig") as f:
        reader = csv.DictReader(f)
       
    for i in reader:
           
    print(i['name'],i['email'])

    2)新建usercopy.csv文件,将user.csv文件的内容按照csv文件写入的方式写入进usercopy.csv中。

    源代码:

    import csv

    with open('D:\\user.csv','r',encoding="utf-8-sig") as f:
        reader = csv.DictReader(f)
        field_name = reader.fieldnames
       
    with open('D:\\usercopy.csv','w',encoding='utf-8-sig',newline='') as f2:
            writer = csv.DictWriter(f2
    ,field_name)
            writer.writeheader()
           
    for i in reader:
                writer.writerow(i)

    列出测试数据和实验结果截图:

    3、异常:

    下面定义了一个CandleShop类:

    class CandleShop:

        name = "Here's a Hot Tip: Buy Drip Candles"

        def __init__(self, stock):

            self.stock = stock

        def buy(self, color):

            self.stock[color] = self.stock[color] - 1

    candle_shop = CandleShop({'blue': 6, 'red': 2, 'green': 0})

    candle_shop.buy('blue')

    1)自定义一个异常类OutOfStack

    class OutOfStack(Exception):
       
    def __init__(self, msg):
           
    self.msg = msg

       
    def __str__(self):
           
    return self.msg

    2)请修改实例buy当购买蜡烛的量超出库存时会抛出OutOfStack异常

    class OutOfStack(Exception):
       
    def __init__(self, msg):
           
    self.msg = msg

       
    def __str__(self):
           
    return self.msg

    class CandleShop:
        name =
    "Here's a Hot Tip: Buy Drip Candles"

       
    def __init__(self, stock):
           
    self.stock = stock

       
    def buy(self, color):
           
    try:
               
    if self.stock[color] - 1 < 0:
                   
    raise OutOfStack('购买蜡烛的量超出库存!')
           
    except OutOfStack as e:
               
    print(e)
           
    else:
               
    self.stock[color] = self.stock[color] - 1


    candle_shop = CandleShop({'blue': 6, 'red': 2, 'green': 0})
    candle_shop.buy(
    'blue')

    3)想办法在主程序中加一个代码会引起程序抛出OutOfStack

    candle_shop.buy('green')

    4)捕获该异常,并输出异常的具体信息。

    实验结果的处理阶段

    实验结果的分析与总结

    掌握基本文件读写的方式;

    掌握csv文件的读写;

    掌握try-except-else语句的用法,自定义异常捕获异常。

  • 相关阅读:
    数字化转型中,企业设备管理会出现什么问题?JNPF或将是“最优解”
    CSS3------CSS选择器
    云计算、区块链、大数据之间的关系与特点
    亚马逊云科技Build On2022技能提升计划第二季——揭秘出海爆款新物种背后的黑科技
    电容式雨雪传感器
    谷粒商城错误总结
    js中判断数组的方式有哪些?
    升级ios16后iphone无法识别SIM?一招解决这个问题!
    球钟问题既栈和队列的结合实例
    MyBatis学习:动态SQL中<where>标签的使用
  • 原文地址:https://blog.csdn.net/qq_64628470/article/details/134427937