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语句的用法,自定义异常捕获异常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/178799.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十九章总结:Java绘图

19.1&#xff1a;Java绘图类 19.2&#xff1a;绘制图形 package nineteentn; import java.awt.*; import javax.swing.*; public class DrawCircle extends JFrame { private final int OVAL_WIDTH 80; // 圆形的宽 private final int OVAL_HEIGHT 80; // 圆形的高…

nginx启动命令

普通启动 切换到nginx安装目录的sbin目录下&#xff0c;执行&#xff1a;./nginx 通过配置文件启动 ./nginx -c /usr/local/nginx/conf/nginx.conf /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 其中-c是指定配置文件,而且配置文件路径必须指定绝对路…

算法刷题:P1908 逆序对

解题关键&#xff1a;就是利用分治的思想&#xff0c;使用归并排序&#xff0c;因为逆序对实际上就是“左侧的数字比右侧大就算一个逆序对”。而这个“左侧”和“右侧”可以相对来看&#xff0c;即左侧的左侧一定就是左侧&#xff0c;说的有点抽象&#xff0c;哈哈哈哈。 花了…

小学生加减乘除闯关运算练习流量主微信小程序开发

小学生加减乘除闯关运算练习流量主微信小程序开发 经过本次更新&#xff0c;我们增加了新的功能和特性&#xff0c;以提升用户体验和运算练习的趣味性&#xff1a; 能量石与激励视频&#xff1a;用户可以通过观看激励视频来获取能量石&#xff0c;这些能量石可以用于解锁收费…

idea启动类运行后报错:Port 6380 was already in use.

问题原因&#xff1a; idea窗口中某个项目还在启动中时 误关了窗口&#xff0c;导致在其他项目运行时报错端口被占用 解决办法&#xff1a; 先杀掉占用端口&#xff0c;再重新启动 步骤如下&#xff1a; 1.先找到6380端口对应pid winr打开cmd命令行窗口 输入命令&#xf…

人力项目框架解析新增修改方法

在迁移项目但是遇到了一些问题&#xff0c;迁移项目的时候发现项目的整体框架很有趣&#xff0c;但是苦于项目框架太大了&#xff0c;竟然只能完整迁移&#xff0c;做不到部分迁移&#xff0c;于是我也只能从一半的角度来进行解释整个项目。 雇员 我们雇员这个为对象讲解一下…

jQuery使用echarts循环插入图表

目录 jQuery动态循环插入echarts图表 y轴显示最大值和最小值 x轴只显示两个值&#xff0c;开始日期和结束日期 jQuery动态循环插入echarts图表 html .center_img_list 是我们循环数据的地方 <div class"center_img shadow"><div class"center_img_b…

响应系统的作用与实现

首先讨论什么是响应式数据和副作用函数&#xff0c;然后尝试实现一个相对完善的响应系统。在这个过程中&#xff0c;我们会遇到各种各样的问题&#xff0c;例如如何避免无限递归&#xff1f;为什么需要嵌套的副作用函数&#xff1f;两个副作用函数之间会产生哪些影响&#xff1…

Leetcode——岛屿的最大面积

1. 题目链接&#xff1a;695. 岛屿的最大面积 2. 题目描述&#xff1a; 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都…

【halcon】踩坑unin2

unin1 先说 unin1 这个函数 很好理解&#xff0c;将多个区域求并集&#xff0c;结果就是多个区域会变成一个区域。 unin1 经常和 closing_circle 这个函数连用。 这是应为 当多个区域变成一个区域之后&#xff0c;才能更好的完成闭操作。 unin2 按照思维惯性&#xff0c;看上…

IDEA安装配置SceneBuilder

1、下载 SceneBuilder 地址&#xff1a; Scene Builder - Gluon ​​​​​​​ Scene Builder | JavaFX中文官方网站 选择符合自己系统版本&#xff0c;JAVA版本的下载 2、安装SceneBuilder 执行下载的 SceneBuilder 安装程序&#xff0c;并按照安装向导的指示进行…