《《Python语言程序设计》实验教学大纲.docx》由会员分享,可在线阅读,更多相关《《Python语言程序设计》实验教学大纲.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Wython程序设计实验教学大纲(The Python Programming Language )课程代码:0600089实验学时:32学时先修课程:数据科学与大数据技术导论、C语言程序设计一、目的要求本实验课程的目的是:通过本课程的学习,使得学生能够熟练使用IDLE或 其他Python开发环境,熟练运用Python列表、元组、字典、集合等基本数据类型 以及相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、 循环结构、函数设计以及类的设计与使用,熟练使用numpy、pandas和 matplotlib等常用的第三方库,熟练使用Python读写文本文件与二进制文件,了 解
2、Python程序的调试方法,熟练运用Python编写面向对象程序,同时使学生了解 不同领域的Python扩展模块基本用法。基本要求:通过本课程的实验训练,要求学生能运用所学理论知识进行 Python程序设计,培养其规范的编程习惯,掌握基本的操作技能和编程思想。同 时,要注意培养学生实事求是的科学态度,为学习后续课程,参加实际工作和开展 科学研究打下良好的基础。二、实验项目内容及学时分配实验一、Python安装与开发环境搭建(2学时)1 .实验目的要求(1)熟练掌握Python解释器安装与基本用法。(2)掌握IDLE环境下程序的建立和执行过程,并能简单调试程序。2 .实验主要内容(1)安装Pyt
3、hon解释器。(2)编写程序,输入人名1和人名2,在屏幕上显示如下信息:#人名1Happy New Year to you!Yours v人名2#(5)编写一程序,由键盘输入起始值和终止值,并将这两个数据传递给函数cal进 行累加与累乘,运算结束后返回和与积。01 #demo0605.py02 def cal(numlz num2):030405060708 #主程序09 Begin=int (input (起始值:)10 end=int (input (终止值:)(6)以下为输出韩国流行歌曲Nobody的一段歌词的代码,print( I want nobody nobody but you)
4、 print( I want nobody nobody but you) print( How can I be with another)print ( I donz t want any other)print ( I want nobody nobody but youprint (print (I wantnobody nobody but youprint( I want nobody nobody but you请将上述代码中的重复部分抽象(定义)成一个函数,并在主程序中调用该函 数,以使原代码更简洁一些。(7)某个公司采用公用电话传递数据,数据(明文)是4位数字,且在传递过程中
5、 是加密的,加密规则:每位数字都加上5,然后用和除以10的余数代替数字,再将 第一位和第四位交换,第二位和第三位交换。如明文是“1234”,则密文是“9876” ;明文是“2345”,则密文是“0987”。定义一个函数enc:rypt(s),参数s为4位数字字符串,该函数根据加密规则返回密 文。在主函数中输入明文,调用加密函数,并输出密文。(实验指导教程实验八第21 题)3 .实验类别:专业基础4 .实验类型:设计5 .实验要求:必做6 .主要仪器:微型计算机实验八、Python的文件操作和异常处理(4学时)1 .实验目的要求(1)掌握文件打开和关闭方法。(2)掌握文件的读写操作。(3)熟悉常
6、用异常及处理的方法。2 .实验主要内容(1)调试完成教材例题。(2)逐一统计文本文件中的字符数。要求:统计文本文件(txtfile, txt自己创建)中的大写字母、小写字母和数 字出现的次数。(3)新建一个文本文件zen. txt,文件内容为“python之禅”的部分内容,具 体如下:Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.编写程序统计该文件内容的行数及单词的个数。(4)文本文件m
7、ydata. txt中存放了一行若干个整数,各整数之间使用英文逗 号分隔,请编写程序读取该文件中的所有整数,将其升序排列后写入到一个 新的文本文件mydataOl. txt内。(5)编程实现文本文件的加密和解密功能。要求:程序对给定的文本文件执行加密运算,加密后的文件输出到另一文本 文件中。【提示】加密算法是对于文件中的每个字母,用字母表中其后第n个字母来 替代,其中n为密钥。加密后的文件可以用密钥-n来解密。例如,文件内容如果是“abcl23(”,密钥是4,则加密后的文件是“efg567,” 。(6)编写异常处理程序。要求:输入姓名和月工资计算年薪,如果输入格式不正确则抛出异常。【提示】程序
8、中的异常可能来自两个方面,一是输入工资信息时输入了非数 字格式,会抛出NameError或SyntaxError异常;二是输入工资范围不正 确,如输入了负值或数值太大,这是一个用户自定义的异常。3 .实验类别:专业基础4 .实验类型:设计6.主要仪器:微型计算机实验九、科学计算、数据分析和图表绘制(6学时)1 .实验目的要求(1)掌握科学计算的第三方库numpy。(2)掌握数据分析的第三方库pandas。(3)掌握数据可视化的第三方库matplotlib。2 .实验主要内容(1)调试完成教材例题。(2)创建numpy数组。要求:使用array。函数、empty。函数、zeros。函数、1 in
9、space()函数等创建 numpy数组。使用numpy数组的索引和切片方法访问数组元素。阅读程序并分析numpy库的运算功能,写出运行结果。01import numpy as np02al=np.array (1,2,3)03bl=np.array(1,2,3, 4,5,6, 7,8,9)04al + 1000506 bl*207 008 al09 bl1011 al+np.array(100,200,300)12 al+bl13 np.sum(bl)14 np. sum (bl, axis=0)15 np.sum(bl,axis=l)22(3)阅读下列程序并上机调试,写出相应的运行结果。
10、import pandas as pd die=城市:北京,上海,广州,深圳,重庆 人 口(万) :2171, 2418, 1090, 1404, 3372, “GDP (万元)”:28000, 30133, 21500, 22286, 19530 df=pd. DataFrame (die, index=,ri, / r2, / r3, / r4 / r5) print (df)(4)绘制散点图。要求:绘制如图9-1所示的余弦三角函数y=cos(2x)散点图。【提示】 使用 import matplotlib. pyplot as pit 和 help (pit. scatter)命令 查看
11、绘制散点图的帮助信息。案8 Figure 1 D X(5)某工厂生产三种产品,每件产品的原料费、工资支付、管理费如表9T所 示,每个季度生产每种产品的数量如表9-2所示。表9-1成本ABC原料费/万元0.61.80.9人工费/万元1.82.41.5管理费/万元0.61.20.9表9-2产品一季度/件二季度/件三季度/件四季度/件A4000450045004000B2000260024002200C5800620060005000请使用numpy和matplotlib编程实现:输出该工厂四个季度生产A、B、C三种产品所需的成本总和。输出该工厂第一季度生产A、B、C三种产品所需的总成本。分别输出该
12、工厂每个季度生产所有产品的原料费总成本、人工费总成本和管理 费总成本,并把这些数据以二维数组的形式许、写入文件cost_product. csv中, 元素之间用英文逗号分隔。绘制折线图,显示四个季度A、B、C三种产品的产量变化趋势,横轴标签设置 为“季度”,纵轴标签设置为“产量”。折线图如下:(6)现有一个Excel文件score, xlsx,文件中存放了 6名同学的成绩,如下图 所示。ABC89号01学102 O 01X3 4 5 6 o o o O o o o O 1X 1X 1X 1X名靖过新蓉醺敏姓郭杨如黄肆赵喷男男男女女女DEF语文数学J英语92 858291938686807894
13、9087769591868282GT就绪二1LSheetl /Sheet2 J Sh8et3 /匕田 ) | |画面凹100%霸score.xlsx请使用pandas和matplotlib编程实现:利用pandas库中read_excel ()函数读取score, xlsx中的数据存放 到 DataFrame 对象 df 中。为df对象新增一列“总分”,值为前三列成绩之和。将df对象依据“总分”列的值从高到低进行排列。根据全部学生的3门课程的相关数据,绘制3门课程的成绩柱状图, 并 且设置绘图区的相关元素(图的标题、x轴标签和y轴标签及y轴的取值范围 等)。3 .实验类别:专业基础4 .实验类
14、型:设计5 .实验要求:必做6 .主要仪器:微型计算机实验十、爬取和分析网页中的数据(2学时)L实验目的要求(1)熟悉网页爬取的基础知识。(2)掌握 urllib、requests 和 BeautifulSoup 等库的应用。(3)掌握数据爬取成功后保存文件(包括图片)的方法。7 .实验主要内容(1)调试完成教材例题。(2)爬取中国票房网(www. cbooo. cn) 2018年度票房排行榜前25名的电 影相关数据,并使用matplotlib库进行图形展示,排行榜页面链接如下:http:/www. cbooo. cn/year?year=2018o(3)爬取铜陵学院教务处2020年所有的教学
15、公告标题,并按照发布时间升序排 列。(4)对全国各省的地区生产总值进行爬取,并可视化展示。爬取网站: http:/data, stats, gov. cn/,可视化过程:数据处理+matplotlib绘图。8 .实验类别:专业基础9 .实验类型:设计10 实验要求:必做11 主要仪器:微型计算机三、考核方式1、实验成绩:预习10%、操作过程40%、实验报告40%、实验记录10%2、无期中抽考、有实验的课程最终成绩;平时成绩X0. 1+实验成绩*0.2+期末 考试成绩X 0.7。3、有期中抽考、有实验的课程最终成绩=平时成绩X0.1+实验成绩X0.2+抽考 成绩X0. 1+期末考试成绩X0. 6
16、o4、考试课按百分制统计课程最终成绩。4 .实验类型:验证5 .实验要求:必做6 .主要仪器:微型计算机实验二、Python数据类型、运算符(2学时)7 .实验目的要求(1)熟练掌握Python数据类型。(2)熟练运用Python运算符(3)掌握代码缩进、注释、数据类型、运算符等基础知识。8 .实验主要内容(1)调试完成教材例题。(2)分析下面各语句的输出结果并写在横线上。01 0.2+0.4=0.602 round(0.2+0.4,1)=0.603 5/204 5/205 9*0.506 -10%-307 -3*208 4.0+309 12 and 34(3)阅读并解析程序,写出运行结果。要
17、求:两个变量的值互换。若X值为3, y值为4,则互换后X的值为y的值为3o01#demo0203 .py02 x=eval (input (请输入 x 的值:”)03 y=eval (input (“请输入 y 的值:”)04 print (输入值:x=, x, y=, y)05 t=x06 x=y07 y=t08 print (互换后:x=,x, ,y)(4)输入一个三位数的整数,对输入的三位数进行处理和变换,输出这个三 位数每一位上数字的和以及这个三位数的反序输出。例如,输入:382,输 出:和为13,反序为283。(5)计算圆椎体体积并输出结果,结果保留2位小数。要求:交互式输入圆椎体的
18、底面半径和高。(6)编写程序,计算并输出方程的实数根。要求:输入一元二次方程ax2+bx+c=0的参数a、b、c,计算并输出方程的 实数根(结果保留两位小数)。若方程没有实数根,输出“方程没有实数 根”。9 .实验类别:基础10 实验类型:设计11 实验要求:必做12 主要仪器:微型计算机实验三、Python字符串的操作(2学时)L实验目的要求(1)掌握字符串操作常用方法。(2)掌握输入输出语句。13 实验主要内容(1)调试完成教材例题。(2)分析代码运行结果并写在横线上。要求:阅读下面的语句,分析其功能。代码如下:01 first_name=nchrisn02 last_name=nWils
19、onn03 fu 1 l_name=first_name+n n4-last_name04 print(nHello, n+full_name.title()+n!n+n *3+HNice to meet you.n)05 06 language=Hpythonn07 print (language . upper ()08 09 print(language)10 product_num= n201906C15MHprint(product_num6)11 print(product_num-1)12 print(product_num4:6)13 print(product_num:4)1
20、9 20 print(product_num-3:-1)21 22 print(m in product_num)(3)分析代码运行结果。要求:阅读下面的程序代码,分析其功能。01 name=nEvanH02 money=45.7803(哈编程噗嘲度父句子反转功能。04 print(n%10s paid $%-6.If for %d apples.n%(name,money,number)05 06 print (n 0 : *A10 paid $ 1: 100,则执行第7行break语句退出循环,故此循环 执行100次,x分别取1100的每个整数。第8行判断如果x是偶数,则第9行的conti
21、nue语句将结束本次循 环,开始下次循环。因此,每个偶数将被忽略;而对于奇数,将执行其后 的第10行语句累加和。01 # while True 循环02 sum=003 x=004 while True:05x=x+l06if x100:07break08if x%2=0:09continue10sum+=x11 print(sum)(6)编程输出一个m行n列的字符矩形。要求:输入行数m、列数n、组成矩形的字符,输出字符矩形。提示:输入 部分代码如下。【提示】利用两层循环嵌套输出图案。01 #输出字符矩形02 m=int (input (请输入矩形的行数:”)03 n=int (input (
22、请输入矩形的列数:”)04 ch=input (”请输入构成矩形的字符:”)(7)在1100之间(包含1和100)产生三个随机整数:a, b, c,求a, b, c的最 大公约数和最小公倍数。(8)利用“牛顿迭代法”求出1n之间的所有整数的算数平方根,并与math库 中sqrt()函数的结果进行比较。3 .实验类别:专业基础4 .实验类型:设计5 .实验要求:必做6 .主要仪器:微型计算机实验五、列表与元组(4学时)1 .实验目的要求(1)掌握列表、元组的定义和访问方法。(2)掌握列表、元组的常用操作。2 .实验主要内容(1)调试完成教材例题。(2)列表中的数据统计的实现。要求:定义一个列表,
23、存储一个班级所有学生某科目考试的成绩等级,编写 程序,统计输出各级别的人数,并按各级别人数的倒序输出。输出结果如下。良好:9 及格:7 优秀:5 不及格:3【提示】程序数据代码如下。01 demo0402.py02 ls_score=及格”,”优秀“,“良好“,“优秀“,“及格“,“不及格“,“良好“,“及格“,“良好“,“不及格“,“良好“,“良好“,“良好“,“及格“,“及格“,“优秀“,“优秀“良好,“不及格“良好”,“及格”良好“,“及格“,“优秀”03 d=首先定义一个空字典d,然后采用for循环从ls_score列表中逐一取出 每个元素,即成绩等级,并判断这个元素是否在d中,这里使
24、用了 d. getO 函数。字典的get()函数用于从字典中获取键对应的值,如果键不在字典中, 给出默认值。第5行,d. get (score,。)将成绩等级score作为键检索字典, 如果该键在字典中,则返回该键的值,即该等级的次数,再加1,表示该等 级又出现了 一次;如果该键不在字典中,则返回0,再加1,并将1赋值给 dscore,相当于在字典中增加一个新元素,其键为score,值为1。字典 添加元素与修改元素的方法相同,都是dietskey=value的形式。参考代码如下。04 for score in ls_score:05dscore=d.get(score,0)+1(3)编写程序,
25、计算和、平均值、方差。要求:输入一组10个整数,存放在列表numbers中,计算这组数的和、 平均值、方差。(4)编写程序,生成一个包含20个两位随机整数的列表,将其前十个元素升序 排列,后十个元素降序排列后输出。(参考实验教程实验六第14题提示)(5)假设已有列表lst=( triange,“shape ), ( red , “color),(square , shape ), ( yellow , color ), ( green”,“color”),(“circle,“shape),其中每个元素都是一个元组。元组中 第一个元素表示值,第二个元素表示标签。试编写程序,完成以下功能:将列表1
26、st中的元素按照标签排序后输出。将所有的颜色值从列表1st中提取出来,存入lst_colors,并将列表输出。(6)学校举办朗诵比赛,邀请了 10位评委为每一名参赛选手的表现打分。假设 列表lst_score=9,10,8,9,10,7,6,8,7,8,存放了某一位参赛选手的所有评委 评分。试编写程序,根据以下规则计算该参赛选手的最终得分:去掉一个最高分。去掉一个最低分。最终得分为剩下8个数的平均分。3 .实验类别:专业基础4 .实验类型:设计5 .实验要求:必做6 .主要仪器:微型计算机实验六、字典与集合(4学时)1 .实验目的要求(1)掌握字典、集合的定义和访问方法。(2)掌握字典、集合的
27、常用操作。2 .实验主要内容(1)调试完成教材例题。(2)编写程序,完成字典操作。要求:建立字典diet,包含以下内容:数学:L04,语文:中01,英语 W02,物理L02,地理:Q03o向字典中添加键值对化学:L03。修改数学对应的值为L01。删除地理对应的键值对。输出字典diet的全部信息。(3)编写程序,实现以下功能:创建空字典dic_student。由用户依次录入五个学生的姓名、年龄、身高和体重,存入字典 dic_student,将姓名作为键,年龄、身高和体重作为值。输出字典dijstudent的内容,格式为:王建18岁172cm80kg张云19岁165cm55kg张秋雨18岁178c
28、m70kg刘欢20岁169cm70kg张宇19岁170cm68kg【提示】值是可变的,因此年龄、身高和体重可以用列表来表示。(4)词频统计。已知一段英文短文(自己定义),编写程序,实现以下功 能:对短文中每个单词出现的次数进行统计,并将结果输出。输出出现次数排在前十名的单词。【提示】在统计之前需要对文本进行预处理,如去除标点符号、统一大小写。 可以通过字符串的split。方法对文本中的单词进行提取,生成一个 列表。遍历列表,对列表中的元素进行统计,统计结果存放在字典中,键表 示单词,值表示次数。(5)编写程序,输入两段文字,自动找出两段文字中相同的文字。【提示】把输入的两段文字转换为集合,然后
29、运用集合的交集运算即可 输出相同的文字。(6)编写程序,完成以下功能:设计一个空字典,用以存放用户的通信录(包括姓名和电话号码)。程序运行后,输出以下提示信息:a.新增联系人b.查询联系人c.删除联系人d.退出程序根据用户的选择,进入下一步操作。a.如果用户选择“新增联系人”选项,则程序输出提示信息,要求用户 输入联系人的姓名和联系电话。程序对字典进行添加操作。重复步骤。b.如果用户选择“查询联系人”选项,则程序输出提示信息,要求用 户输入联系人的姓名,程序根据姓名在字典中进行查询。若联系人存在,则 输出该联系人的姓名和电话号码,否则提示该联系人不存在。重复步骤。c.如果用户选择“删除联系人”
30、选项,则程序输出提示信息,要求用 户输入需删除的联系人的姓名,然后根据用户输入的姓名在字典中进行查 询。若该联系人不存在,则输出相应的提示。若存在,则对字典进行删除操 作。重复步骤。如果用户选择“退出程序”选项,则结束程序的运行。3 .实验类别:专业基础4 .实验类型:设计5 .实验要求:必做6 .主要仪器:微型计算机实验七、函数的定义与编程(2学时)1 .实验目的要求(1)掌握函数的定义、调用及参数传递。(2)掌握常用内置函数的应用。2 .实验主要内容(1)调试完成教材部分例题。(2)编写函数求两点之间的曼哈顿距离。要求:主程序代码如下,调用函数ManhattanDistance求曼哈顿距离
31、。01 #主程序02 xl,(input (“输入A点坐标,以逗号分隔:”)03 x2,(input (输入B点坐标,以逗号分隔:”)04 distance=ManhattanDistance(xlz yl,x2,y2)05 print (点(,)到点(,)的曼哈顿距离为: ” . format (xl A yl, x2, y2, distance)【提示】给出平面上两个点的坐标,平面上点A(xl,yl)与点B(x2,y2)的曼 哈顿距离为:|xl-x2| + |yl-y2|。(3)编写函数,计算某班级学生考试的平均分,结果保留2位小数。要求:班级共10人,计算平均分时可以根据全部人数或者实际
32、参加考试人 数计算。完成avgScoreO函数。01#demo0603 .py02 def avgScore(scores,n=10):0307 #主程序08 scores=90,88,76,45,77,95,66,88,9109 print (按班级人数计算的平均值: : . 2f n . format (avgScore (scores)10 print (按考试人数计算的平均值:2f ” format (avgScore (scores, len (scores)(4)、编写函数,利用可变参数计算一组数的最大值。【提示】部分代码如下,请补全代码。01 #demo0604.py02 def maxnum(*nums):030405060708 #主程序09 print(maxnum(-1,34,-9,56)10 print(maxnum(1,4,6,95,3,78)