Python程序设计各章实验任务及答案_第1页
Python程序设计各章实验任务及答案_第2页
Python程序设计各章实验任务及答案_第3页
Python程序设计各章实验任务及答案_第4页
Python程序设计各章实验任务及答案_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/20实验一Python程序运行方式与开发环境搭建要求:掌握Python程序的运行方式、PyCharm集成开发环境的基本操作。实验一Python程序运行方式与开发环境搭建实验任务书(学生版)【实验目的】1.掌握Python程序的三种运行方式:①交互式解释器、②脚本文件、③IDE(PyCharm)。2.学会在Windows/macOS/Linux上安装Python解释器并配置环境变量。3.熟练使用PyCharm创建项目、文件、运行/调试程序、配置解释器、安装第三方库。【实验环境】•操作系统:Windows10/11、macOS12+或Ubuntu20+•软件:Python3.10+(官方安装包)、PyCharmCommunity/Professional2023+【实验内容与步骤】任务A:Python解释器安装与验证1.从下载对应系统安装包,安装时勾选“AddPythontoPATH”。2.打开系统终端(Win→PowerShell/mac→Terminal/Linux→),执行:python--version及pip--version,确认输出正常。任务B:三种运行方式体验1.交互式在终端输入python进入REPL,逐行执行:print("HelloPython!")2+3exit()2.脚本文件①用记事本/VSCode新建hello.py,写入:name=input("你的名字:")print(f"Welcome,{name}!")②终端执行:pythonhello.py3.PyCharm运行①打开PyCharm→NewProject→选择已安装的解释器。②右键src→New→PythonFile→hello_pycharm.py,复制上方代码。③点击绿色▶或Shift+F10运行,观察下方Run窗口输出。任务C:PyCharm常用操作操作快捷键/菜单创建项目File→NewProject设置解释器File→Settings→Project:xxx→PythonInterpreter安装库右侧Interpreter面板点击“+”搜索并安装,如numpy|运行当前文件Ctrl+Shift+F10调试(断点)点击行号左侧设断点→Shift+F9格式化代码Ctrl+Alt+L快速注释Ctrl+/任务D:综合小练习在PyCharm中完成下列要求并运行:1.新建项目lab01_env,解释器选择系统Python。2.新建calc.py,实现输入半径求圆的面积和周长。3.为calc.py设置断点,单步调试查看变量值。【实验报告要求】1.截图:系统终端验证Python版本、pip版本。2.截图:PyCharm新建项目及运行结果。3.文字总结:三种运行方式的特点及适用场景(≥100字)。【考核标准】•环境安装成功30%•三种运行方式正确演示30%•PyCharm操作熟练度30%•实验总结10%

实验二Python基本语法使用要求:掌握Python程序基本结构和各种基本数据类型的使用。实验二Python基本语法使用实验任务书(学生版)【实验目的】1.掌握Python程序的基本结构(顺序、分支、循环)。2.熟练使用Python基本数据类型(int、float、bool、str、list、tuple、dict、set)。3.能够编写简单交互式程序,完成输入、处理、输出全过程。【实验环境】•Python3.9及以上•IDE:PyCharm/VSCode/JupyterNotebook•必装库:无(仅使用标准库)【实验内容与任务】任务A:变量与基本运算1.从键盘输入圆的半径r(float),计算并输出周长与面积(保留2位小数)。2.从键盘输入摄氏温度c,输出对应的华氏温度f(公式:f=c*1.8+32)。任务B:字符串与列表综合3.输入一个英文句子(含空格),统计并输出:-单词总数-以大写字母开头的单词个数-句子逆序(单词级别逆序)4.先输入5个整数到列表nums,再输出其中偶数的个数及偶数和。任务C:字典与集合5.输入若干行单词(空行结束),使用字典统计每个单词出现次数,并输出出现次数最多的单词及其次数。6.输入两行字符串s1、s2,输出两字符串所含不同字符的交集(按字母升序排列)。任务D:分支与循环7.利用while循环实现简易猜数字游戏:电脑随机产生1~100整数,用户最多猜7次,每次给出“大了/小了/猜中”提示。8.利用for循环输出九九乘法表(左上三角)。任务E:综合应用9.编写“学生成绩管理小系统”:-输入若干学生姓名及3科成绩(循环输入,空姓名结束),存入字典{姓名:[语文,数学,英语]}。-输出平均分最高的学生姓名及平均分(保留1位小数)。【实验报告要求】1.每个任务给出源代码及运行截图(或关键输出)。2.总结Python基本数据类型使用心得(≥100字)。【实验考核】•程序正确性60%•代码规范(缩进、注释、命名)20%•实验总结20%实验三程序基本流程控制要求:熟练使用if分支结构、for循环和while循环开展应用问题的解决。实验三程序基本流程控制实验任务书(学生版)【实验目的】1.熟练使用if/if-else/if-elif-else分支结构解决多条件问题。2.熟练使用for-in循环、while循环及break、continue、pass语句。3.掌握循环与分支的嵌套使用,能够编写小型的数据过滤、统计和交互式游戏程序。【实验环境】Python3.10+,IDE:PyCharm/VSCode/Jupyter。【实验内容与步骤】任务A:单分支/双分支1.输入一个整数,判断并输出“偶数”或“奇数”。2.输入年份,判断并输出“闰年”或“平年”。任务B:多分支3.输入百分制成绩,按以下规则输出等级:[90,100]→A,[80,90)→B,[70,80)→C,[60,70)→D,[0,60)→E。任务C:for循环与列表推导4.输出1~100中所有能被3或5整除的数,并统计个数。5.利用列表推导式生成一个10×10乘法表矩阵(嵌套列表)。任务D:while循环6.用while实现1+2+…+100的累加和。7.猜数字小游戏:电脑随机生成1~100的整数,用户最多猜7次,给出“大了/小了/猜中”提示。任务E:循环+分支综合8.输入若干行学生信息(姓名语文数学英语),空行结束,输出平均分最高的学生姓名(保留1位小数)。9.输出九九乘法表(左上三角),要求使用循环嵌套+格式化对齐。【实验报告要求】1.每个任务粘贴源代码及典型运行结果截图。2.总结break/continue/pass的使用场景(≥50字)。【考核标准】•程序正确性60%•代码规范20%•实验总结20%

实验四典型序列结构应用要求:熟练使用列表、元组、字典和集合的应用。实验四典型序列结构应用实验任务书(学生版)【实验目的】1.熟练掌握Python列表、元组、字典、集合的创建、访问、增删改、遍历、推导式等常用操作。2.能根据业务场景灵活选择合适的数据结构,解决“增删改查、去重、统计、映射”等典型问题。【实验环境】Python3.10+,IDE:PyCharm/VSCode/Jupyter。【实验内容与步骤】任务A列表(List)1.用列表保存5名同学姓名,实现:(1)在末尾追加一名新同学;(2)在第2个位置插入班长姓名;(3)删除倒数第2个同学;(4)输出最终列表。2.列表推导:输入整数n,生成[1,2,…,n]中所有偶数的平方组成的新列表。任务B元组(Tuple)3.用元组存储一个点的三维坐标(x,y,z)。编写函数distance3d(p1,p2)计算两点欧氏距离。测试:输入两点坐标并输出距离(保留2位小数)。任务C字典(Dict)4.建立通讯录字典contact={'张三':123,'李四':456}。实现:(1)新增联系人;(2)根据姓名查询电话(查不到输出“无此联系人”);(3)删除指定联系人;(4)遍历打印所有键值对。5.统计词频:输入一段英文文本,使用字典统计每个单词出现次数,输出出现次数最多的前3个单词。任务D集合(Set)6.输入两行字符串,用集合求:(1)两串中出现的不重复字符的交集;(2)两串中仅在第一串出现的字符(差集)。7.随机产生100个1~1000的整数,用集合去重后输出去重后元素个数及元素本身。任务E综合应用8.简易购物车:•商品信息用字典{商品名:单价}存储;•购物车用字典{商品名:数量}存储;•实现添加、删除、修改数量、结算总金额功能(循环操作,q退出)。【实验报告要求】1.每任务贴源码+关键运行截图。2.总结四类序列结构的适用场景(≥100字)。【考核标准】•程序正确性60%•数据结构选择合理性20%•代码规范与实验总结20%

实验五Python函数的应用要求:掌握函数的定义和使用、利用函数式开展编程应用。实验五Python函数的应用实验任务书(学生版)【实验目的】1.熟练掌握Python函数的定义、调用、参数传递、返回值及作用域。2.熟悉高阶函数、lambda表达式、map/filter/reduce等函数式编程手段。3.能够根据实际问题,合理拆分功能模块,编写可复用、可测试的函数。【实验环境】Python3.10+,IDE:PyCharm/VSCode/Jupyter,无需额外库(若需第三方库,用pip安装)。【实验内容与步骤】任务A函数基础1.编写函数circle_area(r)计算圆面积(π取3.1415926)。2.编写函数max_of_three(a,b,c)返回3个数最大值。3.编写函数is_prime(n)判断正整数n是否为素数。任务B可变参数与默认参数4.编写函数sum_all(*args)接受任意个整数并返回和。5.编写函数register(name,age,city="北京")打印用户信息,验证默认参数行为。任务Clambda与高阶函数6.用一行lambda表达式实现两数相加,并测试。7.给定列表lst=[1,2,3,4,5],使用map与lambda计算平方列表。8.使用filter+lambda从列表[1,2,3,4,5,6,7,8,9,10]中筛选出奇数。9.使用functools.reduce计算列表lst的累乘。任务D函数式综合案例10.编写高阶函数process_data(data,func),对列表data中的每个元素应用func并返回结果列表。调用示例:process_data([1,2,3],lambdax:x2)[1,4,9]11.简易日志分析器•输入若干行形如"2024-06-0810:12:34INFOUserlogin"的日志。•提供函数filter_by_level(logs,level)返回指定级别日志列表。•提供函数count_by_date(logs)返回按日期统计的字典。任务E递归与闭包(选做)12.用递归函数fib(n)计算第n个斐波那契数(n≤30)。13.编写闭包函数make_multiplier(n),返回一个函数,使其返回输入值乘以n。【实验报告要求】1.每任务贴源代码及典型运行结果截图。2.总结函数式编程(lambda、map/filter/reduce)与命令式编程的区别与适用场景(≥100字)。【考核标准】•功能正确性60%•函数设计(参数、返回值、命名)20%•实验总结与代码规范20%

实验六面向对象程序设计要求:掌握类和对象的定义和使用、类的继承使用。实验六面向对象程序设计实验任务书(学生版)【实验目的】1.掌握类的定义、对象的创建与使用、构造方法__init__的编写。2.理解并掌握类的继承、方法重写、super()的用法。3.能够在实际问题中运用封装、继承、多态思想进行模块化设计。【实验环境】Python3.10+,IDE:PyCharm/VSCode/Jupyter,仅需标准库。【实验内容与步骤】任务A类与对象基础1.设计一个Student类:•属性:学号sid、姓名name、成绩score(0~100)。•方法:-__init__初始化;-display()打印学生信息;-grade()返回成绩等级A/B/C/D/E。创建3个学生对象并调用上述方法。任务B构造方法与类属性2.设计BankAccount类:•类属性interest_rate=0.05(年利率)。•实例属性:账户名、余额。•方法:-deposit(money)存款;-withdraw(money)取款(余额不足提示);-show_balance()显示余额。演示存取款并输出利息(余额×利率)。任务C继承与方法重写3.建立基类Shape:•属性:name;•方法:area()(抽象,返回0)。派生类Rectangle(宽、高)和Circle(半径),重写area()。创建不同形状对象,打印名称和面积。任务Dsuper()与多层继承4.基类Person:属性name、age,方法introduce()。派生类Teacher:新增属性subject,调用父类构造方法。派生类Student:新增属性grade。创建实例并输出完整自我介绍。任务E综合案例(选做)5.简易图书管理系统:•基类Book:ISBN、书名、作者、库存。•派生类EBook(新增格式、大小MB)和PaperBook(新增页数)。•提供借书、还书、信息显示功能。用列表管理多本书对象,演示借还流程。【实验报告要求】1.每任务贴出完整代码及运行截图。2.总结封装、继承、多态在实际设计中的好处(≥100字)。【考核标准】•功能正确性55%•面向对象设计合理性25%•实验总结与代码规范20%

实验七Python文件操作要求:掌握文件操作和CSV文件读取。实验七Python文件操作实验任务书(学生版)【实验目的】1.掌握文件打开、读取、写入、关闭等基本操作。2.掌握文本文件、二进制文件的区别及读写方式。3.掌握CSV文件的读取、解析、写入及数据转换技巧。【实验环境】Python3.10+、PyCharm/VSCode/Jupyter、标准库csv模块。【实验内容与步骤】任务A:基本文件读写1.创建文本文件data.txt,写入3行自定义内容。2.逐行读取并打印文件内容;再一次性读取整个文件内容并打印。3.将文件追加一行“Endoffile.”。任务B:文件信息获取4.输入文件名,判断文件是否存在;若存在,输出文件大小、绝对路径、是否可读/可写、是否为目录。任务C:CSV文件操作5.写入CSV创建students.csv,写入表头及5行学生记录(姓名、年龄、成绩)。6.读取CSV读取students.csv到列表,计算并输出平均成绩、最高分、最低分。7.追加CSV将一条新学生记录追加到students.csv末尾。任务D:二进制文件8.将字符串“HelloPython”编码为字节后写入binary.dat;再读取该文件并解码输出。任务E:综合小项目(选做)9.简易通讯录管理器(CSV版)-菜单:1.新增2.查询3.删除4.全部列表5.退出-数据持久化到contacts.csv(姓名,电话,邮箱)。【实验报告要求】1.每任务贴源码+关键运行截图。2.总结文本文件与CSV文件操作的注意事项(≥100字)。【考核标准】•功能正确性60%•代码规范与异常处理20%•实验总结20%

实验八使用模块和库编程要求:掌握模块的定义以及标准库和第三方库的使用。实验八使用模块和库编程实验任务书(学生版)【实验目的】1.掌握自定义模块的创建、导入与调用方式。2.熟悉Python标准库math、datetime、random、csv、json、os、sys的典型用法。3.学会使用pip安装第三方库,并能解决常见问题(镜像、版本冲突)。4.通过综合案例,体验“库即工具”的开发效率,养成阅读官方文档的习惯。【实验环境】•Python3.10+•PyCharm/VSCode/JupyterNotebook•网络环境(用于pip安装第三方库)【实验内容与步骤】┌──任务A:自定义模块1.创建文件夹mylib,内含:•geometry.py:实现circle_area(r)、rectangle_area(w,h)两个函数。•__init__.py(空文件即可)。2.在同级目录下新建test_geometry.py,导入mylib.geometry并调用两函数。┌──任务B:标准库演练3.使用math库计算任意输入的角度(度)对应的正弦、余弦、弧度值。4.使用datetime库:a)获取当前时间并格式化输出YYYY-MM-DDHH:MM:SS;b)计算今天距离2025-01-01还有多少天。5.使用random库:生成1~49之间不重复的6个随机整数,模拟双色球红球。6.使用csv库读写:a)将列表[['Alice',18],['Bob',20]]写入students.csv;b)再读取并打印到屏幕。7.使用json库:a)将字典{"name":"张三","age":22,"skills":["Python","AI"]}写入info.json;b)再读取并转换为Python对象。8.使用os/sys:a)打印当前工作目录、命令行参数列表;b)检查某个文件是否存在,若存在则输出绝对路径和大小。┌──任务C:第三方库体验9.安装并使用第三方库requests:•向发起GET请求,打印返回状态码与JSON中的current_user_url字段。10.安装并使用jieba:•对字符串"Python是一种跨平台、解释型、面向对象的编程语言"进行精确分词并输出列表。11.安装并使用matplotlib:•随机生成50个1~100的整数,绘制直方图并保存为hist.png。┌──任务D:综合案例(选做)12.“天气CLI工具”•调用第三方免费天气API(如wttr.in或openweathermap)。•使用argparse解析城市参数;使用requests获取JSON;使用json、datetime处理数据;•终端打印城市、当前温度、天气状况、风速,并保存到weather.csv。【实验报告要求】1.每任务贴源代码及关键运行结果截图(含pip安装成功提示)。2.总结:•何时应使用标准库VS第三方库?•如何避免第三方库版本冲突?(≥100字)【考核标准】•模块/库使用正确性50%•任务D综合应用(选做加分)20%•实验总结与代码规范30%

实验九Numpy数值计算简单应用要求:Numpy数值运算和操作。实验九Numpy数值计算简单应用实验任务书(学生版)【实验目的】1.掌握NumPy数组(ndarray)的创建、索引、切片、形状变换、广播等基础操作。2.学会使用NumPy进行向量化数学运算、统计函数、随机数生成及简单线性代数。3.能够用NumPy解决实际“批量数值计算”问题,体会与原生Python列表的效率差异。【实验环境】•Python3.10+•已安装:pipinstallnumpy•IDE:PyCharm/VSCode/JupyterNotebook【实验内容与步骤】(以下任务均要求使用NumPy完成,禁止使用Python原生列表循环)任务A数组创建与基本属性1.用np.arange创建一维数组a=[0,1,2,…,9],输出其形状、维度、元素总数。2.用np.zeros和np.ones分别创建3×3全0和全1数组。3.用np.random.rand生成2×4的均匀随机小数矩阵,并求其最大值、最小值、均值。任务B索引与切片4.创建5×5的二维数组mat=np.arange(25).reshape(5,5),输出:(1)第2行整行;(2)第3列整列;(3)中心3×3子矩阵。5.将mat中所有偶数元素置为−1,并输出修改后的数组。任务C广播与运算6.创建两个形状分别为(3,1)和(1,4)的数组,演示广播机制并输出相加结果。7.生成两个长度为1000的一维随机数组x和y,计算:•逐元素平方和z=x²+y²(向量化)。•z的均值、标准差、最大值。任务D线性代数与随机数8.求3×3随机整数矩阵的逆矩阵(若可逆)及行列式。9.用np.random.normal生成10000个N(2,1.5²)样本,绘制直方图(matplotlib)。任务E综合案例(选做)10.“批量成绩分析”•从键盘输入若干学生3科成绩(用二维列表或CSV),转为NumPy二维数组;•计算每科平均、每生总分、最高总分学生索引;•输出结果并保存为analysis.npy。【实验报告要求】1.每任务贴源码及关键输出截图。2.对比NumPy与原生列表在性能或代码简洁性上的差异(≥100字)。【考核标准】•功能正确性60%•NumPy向量化思维体现20%•实验总结与代码规范20%实验十Pandas数据处理分析要求:利用Pandas对数据集进行数据处理与分析。实验十Pandas数据处理与分析实验任务书(学生版)【实验目的】1.熟练掌握Pandas两大核心结构:Series与DataFrame的创建、索引、切片、增删改查。2.学会使用Pandas完成缺失值处理、重复值处理、数据类型转换、排序、分组聚合、合并、透视表等常用数据清洗与变换操作。3.掌握Pandas与CSV/Excel的读写交互,能独立完成从原始数据到洞察结论的完整分析流程。4.体验利用Pandas+Matplotlib/Seaborn进行快速可视化探索。【实验环境】•Python3.10+•pipinstallpandasnumpymatplotlibseabornopenpyxlxlrd•IDE:PyCharm/VSCode/Jupyter【实验内容与步骤】任务A数据准备与基本认知1.创建DataFrame手工构造10×4表:学生成绩.csv,包含字段:学号、姓名、语文、数学、英语、班级。要求:•学号列为字符串,其余为整数;•故意插入若干缺失值、重复行、异常高/低分(>100或<0)。2.读取并查看•用pd.read_csv读取;•输出前5行、后3行、形状、列名、数据类型、缺失值统计。任务B数据清洗3.缺失值处理a)用列均值填充语文缺失;b)用0填充数学缺失;c)删除英语缺失的行。4.重复值与异常值•删除完全重复行;•把超出0~100的成绩置为缺失后再用中位数填充。5.类型转换•将班级列转成category;•将学号设为索引并排序。任务C数据变换与统计6.新增列•总分=语文+数学+英语,平均分=总分/3。7.分组聚合•按班级统计各科平均分、最高分、最低分。8.排序与筛选•输出总分前3的学生;•输出语文低于60分的学生列表。9.透视表•制作透视表:行索引为班级,列索引为科目,值为平均分。任务D多数据源合并10.读取附加文件班级信息.xlsx(含班级、班主任、人数),与主表按班级左合并,检查合并后缺失值。任务E可视化探索11.绘制•班级平均分柱状图;•总分分布箱线图;•语文vs数学散点图(颜色按班级)。12.保存结果•清洗后数据保存为学生成绩_clean.csv;•透视表保存为班级成绩透视.xlsx。【实验报告要求】1.每阶段贴核心代码+关键输出/图表截图。2.总结:Pandas高效数据处理的心得与踩坑记录(≥150字)。【考核标准】•数据清洗完整度30%•变换与统计准确性30%•可视化美观性20%•实验总结与规范20%实验十一Matplotlib绘制常见图形要求:利用Matplotlib库绘制常见图形以及对辅助元素的设置。实验十一Matplotlib绘制常见图形实验任务书(学生版)【实验目的】1.掌握Matplotlib绘图基本流程(Figure→Axes→Plot→Show/Save)。2.熟练绘制折线图、柱状图、饼图、散点图、直方图、箱线图等常见图形。3.学会设置标题、坐标轴标签、刻度、图例、网格、注释、颜色、线型、字体等辅助元素。4.能够将多图组合(子图/双坐标轴)并导出高分辨率图片。【实验环境】•Python3.10+•pipinstallmatplotlibnumpypandas•IDE:Jupyter(推荐)/PyCharm/VSCode【实验内容与步骤】(所有图形均需设置中文标题、坐标轴标签、图例、网格,并保存为PNG)任务A折线图1.数据:2024年1–12月淘宝GMV(亿元)=[120,135,150,145,160,175,180,190,200,210,220,230]。要求:•折线颜色为#1f77b4,线宽2;•标记点样式‘o’,大小6;•标题“2024年月度GMV趋势”;•保存为line_gmv.png。任务B柱状图2.数据:某班5门课程平均成绩={'语文':85,'数学':78,'英语':92,'物理':75,'化学':88}。要求:•竖向柱状图,柱子颜色渐变;•每根柱子上方标注数值;•保存为bar_score.png。任务C饼图3.数据:电商平台4类商品销售额占比={'手机':35,'电脑':25,'家电':20,'服饰':20}。要求:•突出显示手机扇区;•百分比保留1位小数;•图例位于右侧;•保存为pie_sales.png。任务D散点图4.数据:随机生成100个身高(cm)和体重(kg)。要求:•颜色映射BMI(体重/身高²);•添加colorbar;•保存为scatter_bmi.png。任务E直方图&箱线图5.数据:随机生成1000个N(100,15²)成绩。要求:•直方图bins=20,密度曲线叠加KDE;•箱线图与直方图左右子图;•保存为hist_box_score.png。任务F子图与双坐标轴6.数据:某城市7天温度和湿度。要求:•一行两子图:(1)温度折线(左轴)+湿度折线(右轴);(2)温度柱状图;•共享x轴;•保存为subplot_weather.png。任务G综合案例(选做)7.可视化“双十一”销售大屏:•读取CSVsales.csv(含日期、品类、销量、销售额);•绘制品类销量横向柱状图+日期折线图+销售额饼图;•组合为2×2子图并导出dashboard.png。【实验报告要求】1.每图贴关键代码与结果截图。2.总结Matplotlib常用辅助元素设置技巧(≥150字)。【考核标准】•图形正确性50%•辅助元素完整性30%•创意与美观10%•实验总结10%参考答案(教师版,可直接运行)任务A折线图importmatplotlib.pyplotaspltimportnumpyasnpplt.rcParams['font.sans-serif']=['SimHei']#中文plt.rcParams['axes.unicode_minus']=Falsegmv=[120,135,150,145,160,175,180,190,200,210,220,230]months=range(1,13)plt.figure(figsize=(8,4))plt.plot(months,gmv,color='#1f77b4',linewidth=2,marker='o',markersize=6)plt.title("2024年月度GMV趋势")plt.xlabel("月份")plt.ylabel("GMV(亿元)")plt.grid(alpha=0.3)plt.xticks(months)plt.tight_layout()plt.savefig("line_gmv.png",dpi=300)plt.show()任务B柱状图scores={'语文':85,'数学':78,'英语':92,'物理':75,'化学':88}courses=list(scores.keys())values=list(scores.values())plt.figure(figsize=(6,4))bars=plt.bar(courses,values,color=plt.cm.viridis(np.linspace(0,1,5)))forbar,vinzip(bars,values):plt.text(bar.get_x()+bar.get_width()/2,bar.get_height()+1,str(v),ha='center')plt.title("班级课程平均成绩")plt.ylabel("分数")plt.ylim(0,100)plt.tight_layout()plt.savefig("bar_score.png")plt.show()任务C饼图labels=['手机','电脑','家电','服饰']sizes=[35,25,20,20]explode=(0.1,0,0,0)#突出手机plt.figure(figsize=(5,5))plt.pie(sizes,explode=explode,labels=labels,autopct='%.1f%%',startangle=90)plt.title("商品销售额占比")plt.legend(loc='right')plt.tight_layout()plt.savefig("pie_sales.png")plt.show()任务D散点图np.random.seed(42)height=np.random.normal(170,8,100)weight=np.random.normal(65,10,100)bmi=weight/(height/100)2plt.figure(figsize=(6,4))sc=plt.scatter(height,weight,c=bmi,cmap='RdYlBu',alpha=0.7)plt.colorbar(sc,label='BMI')plt.title("身高-体重散点图")plt.xlabel("身高(cm)")plt.ylabel("体重(kg)")plt.tight_layout()plt.savefig("scatter_bmi.png")plt.show()任务E直方图+箱线图scores=np.random.normal(100,15,1000)fig,ax=plt.subplots(1,2,figsize=(10,4))ax[0].hist(scores,bins=20,density=True,alpha=0.6,color='skyblue')ax[0].set_title("成绩直方图")ax[1].boxplot(scores,vert=False)ax[1].set_title("箱线图")plt.tight_layout()plt.savefig("hist_box_score.png")plt.show()任务F子图+双坐标轴days=range(1,8)temp=[22,24,21,25,26,23,22]hum=[45,50,55,48,52,60,58]fig,ax=plt.subplots(1,2,figsize=(12,4))#子图1:双坐标轴ax1=ax[0]ax2=ax1.twinx()ax1.plot(days,temp,'r-o',label='温度')ax2.plot(days,hum,'b-s',label='湿度')ax1.set_xlabel("日期")ax1.set_ylabel("温度(°C)",color='r')ax2.set_ylabel("湿度(%)",color='b')ax1.set_title("温度湿度双轴图")ax1.legend(loc='upperleft')ax2.legend(loc='upperright')#子图2:柱状图ax[1].bar(days,temp,color='orange')ax[1].set_title("温度柱状图")ax[1].set_xlabel("日期")ax[1].set_ylabel("温度(°C)")plt.tight_layout()plt.savefig("subplot_weather.png")plt.show()教师检查要点:✓所有图形输出正常,无中文乱码✓辅助元素(标题、标签、图例、网格、注释)完整✓实验报告总结绘图技巧与心得实验一Python程序运行方式与开发环境搭建要求:掌握Python程序的运行方式、PyCharm集成开发环境的基本操作。参考答案(教师版)任务A终端验证截图示例C:\>python--versionPython3.11.4C:\>pip--versionpip23.2.1任务B-2脚本文件hello.pyprint("Hellofromscript!")任务B-3PyCharm运行截图要点•Run窗口出现Welcome,Alice!•Debug窗口变量面板显示name='Alice'任务Dcalc.py参考代码importmathr=float(input("请输入半径:"))area=math.pi*r2perimeter=2*math.pi*rprint(f"面积={area:.2f},周长={perimeter:.2f}")教师检查清单✓学生能在终端/IDE复现运行结果✓报告含截图与总结✓代码规范(缩进、注释)

实验二Python基本语法使用要求:掌握Python程序基本结构和各种基本数据类型的使用。参考答案(教师版)任务A-1importmathr=float(input("请输入半径:"))print(f"周长:{2*math.pi*r:.2f}")print(f"面积:{math.pi*r2:.2f}")任务A-2c=float(input("请输入摄氏温度:"))print(f"华氏温度:{c*1.8+32:.2f}")任务B-3importres=input("请输入英文句子:")words=re.findall(r'\b\w+\b',s)print("单词总数:",len(words))print("大写开头单词:",sum(1forwinwordsifw[0].isupper()))print("逆序句子:",''.join(words[::-1]))任务B-4nums=[int(input(f"请输入第{i+1}个整数:"))foriinrange(5)]evens=[nforninnumsifn%2==0]print("偶数个数:",len(evens),"偶数和:",sum(evens))任务C-5fromcollectionsimportdefaultdictcount=defaultdict(int)whileTrue:line=input("输入单词(空行结束):").strip()ifnotline:breakforwinline.split():count[w]+=1ifcount:max_word=max(count,key=count.get)print(max_word,count[max_word])任务C-6s1,s2=input("第一行:"),input("第二行:")inter=sorted(set(s1)&set(s2))print("交集字符:",''.join(inter))任务D-7importrandomn=random.randint(1,100)foriinrange(7):guess=int(input("猜数字(1-100):"))ifguess==n:print("猜中!")breakprint("大了"ifguess>nelse"小了")else:print("次数用完,数字是",n)任务D-8foriinrange(1,10):forjinrange(1,i+1):print(f"{j}*{i}={i*j}",end="\t")print()任务E-9students={}whileTrue:name=input("姓名(回车结束):").strip()ifnotname:breakscores=list(map(float,input("语文数学英语成绩:").split()))students[name]=scoresifstudents:best=max(students.items(),key=lambdakv:sum(kv[1])/3)print("平均分最高的学生:",best[0],round(sum(best[1])/3,1))教师可批量测试脚本正确性,学生需提交实验报告及代码文件。

实验三程序基本流程控制要求:熟练使用if分支结构、for循环和while循环开展应用问题的解决。参考答案(教师版)任务A-1n=int(input("整数:"))print("偶数"ifn%2==0else"奇数")任务A-2y=int(input("年份:"))if(y%4==0andy%100!=0)or(y%400==0):print("闰年")else:print("平年")任务B-3score=int(input("成绩:"))if90<=score<=100:grade='A'elif80<=score<90:grade='B'elif70<=score<80:grade='C'elif60<=score<70:grade='D'elif0<=score<60:grade='E'else:grade='非法'print("等级:",grade)任务C-4nums=[iforiinrange(1,101)ifi%3==0ori%5==0]print("个数:",len(nums),"值:",nums)任务C-5table=[[f"{j}*{i}={i*j}"forjinrange(1,i+1)]foriinrange(1,10)]forrowintable:print("\t".join(row))任务D-6s,i=0,1whilei<=100:s+=ii+=1print("1~100和:",s)任务D-7importrandomnum=random.randint(1,100)guess_cnt=0whileguess_cnt<7:guess=int(input("猜1~100:"))guess_cnt+=1ifguess==num:print("猜中!")breakprint("大了"ifguess>numelse"小了")else:print("次数用完,答案是",num)任务E-8students={}whileTrue:line=input("姓名语文数学英语(回车结束):").strip()ifnotline:breakname,*scores=line.split()scores=list(map(float,scores))students[name]=sum(scores)/3ifstudents:best=max(students.items(),key=lambdax:x[1])print(f"最高分:{best[0]}{best[1]:.1f}")任务E-9foriinrange(1,10):forjinrange(1,i+1):print(f"{j}*{i}={i*j}",end="\t")print()教师检查要点:✓所有任务可一键运行,结果正确✓学生报告含break/continue/pass使用总结✓代码缩进、注释、命名符合规范

实验四典型序列结构应用要求:熟练使用列表、元组、字典和集合的应用。参考答案(教师版)任务A-1names=['Alice','Bob','Carl','David','Eva']names.append('Frank')names.insert(1,'Monitor')delnames[-2]print(names)任务A-2n=int(input("n="))squares=[x2forxinrange(1,n+1)ifx%2==0]print(squares)任务B-3importmathdefdistance3d(p1,p2):returnmath.sqrt(sum((a-b)2fora,binzip(p1,p2)))p1=tuple(map(float,input("点1xyz:").split()))p2=tuple(map(float,input("点2xyz:").split()))print(f"{distance3d(p1,p2):.2f}")任务C-4contact={'张三':123,'李四':456}#(1)新增contact[input("姓名:")]=int(input("电话:"))#(2)查询name=input("查询姓名:")print(contact.get(name,"无此联系人"))#(3)删除ifinput("删除姓名:")incontact:delcontact[name]#(4)遍历fork,vincontact.items():print(k,v)任务C-5fromcollectionsimportCounterimportretext=input("英文文本:")words=re.findall(r'\b\w+\b',text.lower())top3=Counter(words).most_common(3)print(top3)任务D-6s1,s2=input("串1:"),input("串2:")set1,set2=set(s1),set(s2)print("交集:",''.join(sorted(set1&set2)))print("差集:",''.join(sorted(set1-set2)))任务D-7importrandomnums=[random.randint(1,1000)for_inrange(100)]unique=set(nums)print("去重个数:",len(unique),"元素:",sorted(unique))任务E-8importsysgoods={'apple':5,'banana':3,'pear':4}cart={}whileTrue:cmd=input("操作(add/del/mod/checkout/q):").strip().lower()ifcmd=='q':breakelifcmd=='add':item=input("商品:")ifitemingoods:cart[item]=cart.get(item,0)+1else:print("无此商品")elifcmd=='del':item=input("删除商品:")cart.pop(item,None)elifcmd=='mod':item,qty=input("商品新数量:").split()ifitemingoods:cart[item]=int(qty)elifcmd=='checkout':total=sum(goods[k]*vfork,vincart.items())print("应付:",total,"购物车:",cart)else:print("非法命令")教师检查要点:✓所有任务运行结果正确✓学生报告中对四类数据结构适用场景的总结到位✓代码符合PEP8规范(缩进、命名、注释)

实验五Python函数的应用要求:掌握函数的定义和使用、利用函数式开展编程应用。参考答案(教师版)任务A-1defcircle_area(r):return3.1415926*r*r任务A-2defmax_of_three(a,b,c):returnmax(a,b,c)任务A-3defis_prime(n):ifn<2:returnFalseforiinrange(2,int(n0.5)+1):ifn%i==0:returnFalsereturnTrue任务B-4defsum_all(*args):returnsum(args)任务B-5defregister(name,age,city="北京"):print(f"姓名:{name},年龄:{age},城市:{city}")任务C-6add=lambdax,y:x+yprint(add(3,5))任务C-7lst=[1,2,3,4,5]squares=list(map(lambdax:x2,lst))print(squares)任务C-8fromfunctoolsimportreduceodds=list(filter(lambdax:x%2,range(1,11)))print(odds)任务C-9fromfunctoolsimportreduceimportoperatorlst=[1,2,3,4,5]product=reduce(operator.mul,lst,1)print(product)任务D-10defprocess_data(data,func):return[func(x)forxindata]任务D-11fromcollectionsimportdefaultdictimportdatetimedeffilter_by_level(logs,level):return[lineforlineinlogsiff"{level}"inline]defcount_by_date(logs):counter=defaultdict(int)forlineinlogs:date_str=line.split()[0]counter[date_str]+=1returndict(counter)#示例运行if__name__=="__main__":logs=["2024-06-0810:12:34INFOUserlogin","2024-06-0810:13:21ERRORFailedlogin","2024-06-0909:00:00INFOUserlogout"]print("INFOlogs:",filter_by_level(logs,"INFO"))print("Countbydate:",count_by_date(logs))任务E-12(递归)deffib(n):returnnifn<2elsefib(n-1)+fib(n-2)任务E-13(闭包)defmake_multiplier(n):defmultiplier(x):returnx*nreturnmultipliertimes3=make_multiplier(3)print(times3(10))#30教师检查要点:✓所有函数可独立运行且结果正确✓函数名、参数、返回值符合任务要求✓学生实验报告对函数式编程的总结准确

实验六面向对象程序设计要求:掌握类和对象的定义和使用、类的继承使用。参考答案(教师版)任务A-1Student类classStudent:def__init__(self,sid,name,score):self.sid,,self.score=sid,name,scoredefdisplay(self):print(f"{self.sid}{}{self.score}")defgrade(self):ifself.score>=90:return'A'elifself.score>=80:return'B'elifself.score>=70:return'C'elifself.score>=60:return'D'return'E's1=Student(1001,"Alice",95)s2=Student(1002,"Bob",72)s3=Student(1003,"Carol",59)forsin[s1,s2,s3]:s.display()print("等级:",s.grade())任务B-2BankAccount类classBankAccount:interest_rate=0.05def__init__(self,owner,balance=0):self.owner,self.balance=owner,balancedefdeposit(self,money):ifmoney<=0:print("金额必须>0")else:self.balance+=moneydefwithdraw(self,money):ifmoney>self.balance:print("余额不足")else:self.balance-=moneydefshow_balance(self):print(f"{self.owner}余额:{self.balance:.2f}利息:{self.balance*BankAerest_rate:.2f}")acc=BankAccount("张三",1000)acc.deposit(500)acc.withdraw(200)acc.show_balance()任务C-3Shape→Rectangle/CircleimportmathclassShape:def__init__(self,name):=namedefarea(self):return0classRectangle(Shape):def__init__(self,w,h):super().__init__("Rectangle")self.w,self.h=w,hdefarea(self):returnself.w*self.hclassCircle(Shape):def__init__(self,r):super().__init__("Circle")self.r=rdefarea(self):returnmath.pi*self.r2shapes=[Rectangle(3,4),Circle(2)]forsinshapes:print(f"{}面积:{s.area():.2f}")任务D-4Person→Teacher/StudentclassPerson:def__init__(self,name,age):,self.age=name,agedefintroduce(self):returnf"{}年龄{self.age}"classTeacher(Person):def__init__(self,name,age,subject):super().__init__(name,age)self.subject=subjectdefintroduce(self):returnsuper().introduce()+f"科目{self.subject}"classStudent(Person):def__init__(self,name,age,grade):super().__init__(name,age)self.grade=gradedefintroduce(self):returnsuper().introduce()+f"年级{self.grade}"t=Teacher("王老师",35,"Python")s=Student("小李",18,"高三")print(roduce())print(roduce())任务E-5简易图书管理系统(选做)classBook:def__init__(self,isbn,title,author,stock):self.isbn,self.title,self.author,self.stock=isbn,title,author,stockdefborrow(self,n=1):ifself.stock>=n:self.stock-=nreturnTruereturnFalsedefreturn_book(self,n=1):self.stock+=ndef__str__(self):returnf"{self.isbn}《{self.title}》{self.author}库存{self.stock}"classEBook(Book):def__init__(self,isbn,title,author,stock,fmt,size_mb):super().__init__(isbn,title,author,stock)self.fmt,self.size_mb=fmt,size_mbdef__str__(self):returnsuper().__str__()+f"格式{self.fmt}大小{self.size_mb}MB"classPaperBook(Book):def__init__(self,isbn,title,author,stock,pages):super().__init__(isbn,title,author,stock)self.pages=pagesdef__str__(self):returnsuper().__str__()+f"页数{self.pages}"#演示books=[PaperBook("001","Python入门","作者A",5,320),EBook("002","Python进阶","作者B",3,"PDF",12.5)]forbinbooks:print(b)books[0].borrow(2)books[0].return_book(1)print(books[0])教师检查要点:✓构造方法正确、属性封装清晰✓继承与方法重写符合OOP原则✓学生实验报告总结封装、继承、多态带来的好处实验七Python文件操作要求:掌握文件操作和CSV文件读取。参考答案(教师版)任务A#1.写入withopen('data.txt','w',encoding='utf-8')asf:f.write('Python实验七\n文件操作基础\n')#2.逐行读取withopen('data.txt',encoding='utf-8')asf:forlineinf:print(line.rstrip())#一次性读取withopen('data.txt',encoding='utf-8')asf:print(f.read())#3.追加withopen('data.txt','a',encoding='utf-8')asf:f.write('Endoffile.\n')任务Bimportos,statfname=input("文件名:")ifos.path.exists(fname):print("文件大小:",os.path.getsize(fname),"字节")print("绝对路径:",os.path.abspath(fname))print("可读:",os.access(fname,os.R_OK))print("可写:",os.access(fname,os.W_OK))print("是目录:"ifos.path.isdir(fname)else"不是目录")else:print("文件不存在")任务C-5写入importcsvdata=[['姓名','年龄','成绩'],['张三',18,90],['李四',19,85],['王五',20,92],['赵六',19,88],['钱七',18,95]]withopen('students.csv','w',newline='',encoding='utf-8')asf:writer=csv.writer(f)writ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论