MySQL数据库教程(项目任务式版) 教案、习题答案、拓展知识 谢萍_第1页
MySQL数据库教程(项目任务式版) 教案、习题答案、拓展知识 谢萍_第2页
MySQL数据库教程(项目任务式版) 教案、习题答案、拓展知识 谢萍_第3页
MySQL数据库教程(项目任务式版) 教案、习题答案、拓展知识 谢萍_第4页
MySQL数据库教程(项目任务式版) 教案、习题答案、拓展知识 谢萍_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

******学校教师教案(学年第学期)课程名称:数据库原理及应用授课专业:任课教师:所在系部:2025年9月

项目1数据库基础知识和MySQL安装与配置任务名称数据库基础知识教学目的掌握数据库的基本概念。了解数据模型。掌握关系数据库的基础知识。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:关系数据库难点:专门的关系运算教学内容设计课程引入:通过提出问题“日常生活和工作中哪些业务活动离不开数据库的支持?”引入本课授课内容:一、数据库的基本概念1.数据2.数据库3.数据库管理系统4.数据库系统二、认识数据模型1.概念模型实体、属性、实体集、实体之间的联系以及E-R图。2.逻辑模型三、认识关系数据库1.关系数据库中的基本术语关系、属性(字段)、元组(记录)、分量、域、主关键字、外部关键字。2.关系的基本性质3.关系运算传统的集合运算:并、交、差和广义笛卡儿积运算;专门的关系运算:选择、投影、连接和除运算。总结课程内容,重申重点、难点课后任务完成第1章习题,巩固数据库基础知识任务名称MySQL安装与配置教学目的掌握MySQL安装与配置的方法。掌握登录与退出MySQL的方法。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:登录与退出MySQL难点:以root身份通过命令提示符窗口登录MySQL的命令mysql教学内容设计课程引入:通过“要创建或使用数据库,必须安装相应的数据库管理系统”引入本课。授课内容:一、下载MySQL安装包二、安装与配置MySQL三、登录与退出MySQL1.启动或停止MySQL2.使用超级管理员root身份登录MySQL3.退出MySQL总结课程内容,重申重点、难点课后任务在自己的电脑上安装与配置MySQL,为后面章节的学习搭建好数据库环境

项目2数据库设计任务名称数据库设计教学目的了解数据库设计阶段。掌握E-R图的绘制方法。掌握关系模式的设计方法。了解关系模式的规范化教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:如何分析和表达用户需求如何将用户需求抽象为E-R图的形式将实体集之间的联系转换为关系模式的方法难点:全局E-R图,将E-R图转换为关系模式的方法。教学内容设计课程引入:通过提出问题“如何设计出满足不同用户应用需求的数据库?”引入本课。授课内容:一、认识数据库设计1.需求分析2.概念结构设计3.逻辑结构设计4.物理结构设计5.数据库实施6.数据库运行和维护设计一个完善的数据库不可能一蹴而就,往往需要6个阶段的多次反复。二、需求分析1.需求分析的任务和重点2.需求分析的方法三、概念结构设计1.局部E-R图设计2.全局E-R图设计四、逻辑结构设计1.关系模式设计2.关系模式的规范化五、项目案例--设计图书馆借还书管理管理数据库1.需求分析(收集并分析数据)2.概念结构设计(绘制E-R图)3.逻辑结构设计(关系模式设计)总结课程内容,重申重点、难点课后任务复习【项目案例】中设计的图书馆借还书管理数据库,掌握绘制E-R图转换为关系模式的方法。有能力的同学完成【项目实践】中学生成绩管理数据库的设计。项目3数据定义任务名称创建和管理数据库及数据表教学目的掌握创建和管理数据库的相关语句。掌握创建和管理数据表的相关语句。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:创建数据表的语句难点:MySQL支持的数据类型教学内容设计课程引入:通过“设计人员设计的数据库需要单独创建”引入本课。授课内容:一、创建和管理数据库1.创建数据库的语句2.显示数据库3.选择数据库4.修改数据库5.删除数据库二、创建和管理数据表1.MySQL支持的数据类型2.设计数据表3.创建数据表4.查看数据表5.修改数据表6.复制数据表7.删除数据表总结课程内容,重申重点、难点课后任务掌握CREATTABLE语句,完成【项目案例】中图书馆借还书管理数据库以及数据库中5张表的创建。有能力的同学完成【项目实践】中学生成绩管理数据库及数据表的创建。任务名称数据完整性约束教学目的了解数据完整性约束的功能和作用。掌握建立数据完整性约束的方法。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:建立主键约束、外键约束和检查约束的语句。难点:外键约束教学内容设计课程引入:通过提出问题“数据库自己能够识别出不满足某些条件的数据吗?”引入本课。授课内容:一、认识数据完整性二、主键约束三、唯一约束四、外键约束五、检查约束六、非空约束七、默认值约束八、删除数据完整性约束九、【项目案例】图书馆借还书管理数据库的数据定义1.设计数据表2.创建数据库3.创建数据表4.指定数据完整性约束总结课程内容,重申重点、难点课后任务完成【项目案例】中图书馆借还书管理数据库5张表的数据完整性约束的创建。有能力的同学完成【项目实践】中学生成绩管理数据库的完整性约束的创建。

项目4数据操作任务名称数据操作教学目的熟练掌握INSERT、UPDATE和DELETE语句的使用。了解不同的数据完整性约束对数据操作结果的影响。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:INSERT、UPDATE和DELETE语句难点:数据完整性约束对数据操作结果的影响教学内容设计课程引入:通过“创建数据库和数据表之后,下一步是向数据表中插入数据”引入本课。授课内容:一、插入数据1.插入一条完整的数据2.插入一条数据的部分字段值4.插入多条数据5.插入查询结果中的数据6.插入并替换已存在的数据二、修改数据1.修改指定条件的数据2.修改全部数据三、删除数据1.删除满足指定条件的数据2.删除全部数据四、【项目案例】图书馆借还书管理数据库的数据操作1.插入各张表中的数据(插入顺序有什么要求)2.修改表中的数据(修改主键和外键字段值的结果如何)3.删除表中的数据(删除父表和子表的记录的结果如何)总结课程内容,重申重点、难点课后任务完成【项目案例】中图书馆借还书管理数据库5张表的数据操作。有能力的同学完成【项目实践】中学生成绩管理数据库中数据表的数据操作。

项目5数据查询任务名称单表查询、聚合函数和数据分组教学目的掌握SELECT语句的基本语法格式。熟练运用SELECT语句实现单表查询。熟练运用聚合函数实现统计查询。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:SELECT语句的基本语法格式、简单数据查询、条件数据查询、聚合函数难点:WHERE子句中查询条件的设置,GROUPBY子句的分组查询教学内容设计课程引入:通过“用户需要从一张表或多张表中按照指定的条件检索出需要的数据”引入本课。授课内容:一、数据查询语句二、简单数据查询1.显示全部字段的数据2.显示指定字段的数据3.指定字段的别名4.显示经过计算的值5.消除查询结果中的重复行6.限制查询结果中的记录条数7.对查询结果进行排序三、条件数据查询1.比较运算2.逻辑运算3.确定范围4.字符串匹配5.空值判断四、聚合函数1.COUNT函数2.SUM函数和AVG函数3.MAX函数和MIN函数五、数据分组1.单字段分组2.多字段分组3.HAVING子句总结课程内容,重申重点、难点课后任务完成“例5-1”“例5-2”“例5-3”……和“例5-28”

任务名称多表连接查询、子查询、联合查询教学目的掌握多表连接查询的方法掌握子查询和联合查询教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:连接运算、子查询难点:四张表的内连接查询、子查询的执行顺序教学内容设计课程引入:通过提出问题“如果查询结果的字段来自于多张不同的表,则需要通过连接运算将多张表进行连接。”引入本课。授课内容:连接运算交叉连接内连接外连接二、等值连接查询三、子查询结果为单个值结果为多个值EXISTS子查询四、联合查询五、【项目案例】图书馆借还书管理数据库的数据查询总结课程内容,重申重点、难点课后任务完成【项目案例】中图书馆借还书管理数据库的数据查询。有能力的同学完成【项目实践】中学生成绩管理数据库的数据查询。

项目6视图任务名称视图教学目的掌握视图的概念和创建查询视图的方法。掌握对视图的更新操作教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:创建视图的方法、更新视图难点:视图是虚表的概念教学内容设计课程引入:通过“视图是从一张或多张基本表中导出的虚拟表”引入本课授课内容:一、视图概述二、创建和查询视图1.创建视图2.查询视图三、更新视图1.插入数据2.修改数据3.删除数据四、修改视图定义五、删除视图六、【项目案例】图书馆借还书管理数据库的视图总结课程内容,重申重点、难点课后任务完成【项目案例】中图书馆借还书管理数据库的视图。有能力的同学完成【项目实践】中学生成绩管理数据库的视图。

项目7索引任务名称第一节索引概述教学目的掌握索引的概念和索引分类。掌握索引的使用。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:索引的概念和分类、创建索引难点:适合创建索引的字段特点教学内容设计课程引入:通过“索引可以加快检索的速度,提高数据库系统的性能”引入本课。授课内容:索引概述索引的概念索引的分类二、创建索引1.使用CREATEINDEX语句创建索引2.使用ALTERTABLE语句添加索引3.使用CREATETABLE语句创建索引三、查看索引四、删除索引1.使用DROPINDEX语句删除索引2.使用ALTERTABLE语句删除索引五、【项目案例】图书馆借还书管理数据库的索引总结课程内容,重申重点、难点课后任务完成【项目案例】中图书馆借还书管理数据库的索引。有能力的同学完成【项目实践】中学生成绩管理数据库的索引。

项目8数据库编程技术任务名称编程基础知识、存储过程教学目的掌握常量、变量、系统函数和流程控制语句。掌握创建和调用存储过程的方法。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:常量、变量、系统函数和流程控制语句、存储过程的创建、游标的使用步骤。难点:结合程序控制流程创建存储过程教学内容设计课程引入:通过“为了提高工作效率,可以将多条命令组合在一起,形成一个程序一次性执行”引入本课。授课内容:常量和变量常量变量二、系统内置函数1.数学函数2.字符串函数3.日期和时间函数4.控制流程函数三、流程控制语句1.顺序语句2.分支语句3.循环语句四、存储过程1.创建存储过程2.调用存储过程3.删除存储过程4.使用游标总结课程内容,重申重点、难点课后任务完成“例8-1”“例8-2”“例8-3”……和“例8-24”任务名称存储函数、触发器和事件教学目的掌握创建和调用存储函数的方法。掌握创建触发器和事件的方法。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:存储函数的创建难点:存储函数与存储过程的区别教学内容设计课程引入:通过提出问题“MySQL的存储函数与存储过程的作用和格式有许多类似之处,都是由声明式SQL语句和过程式SQL语句组成的”引入本课。授课内容:存储函数1.创建存储函数2.调用存储函数3.删除存储函数触发器1.创建触发器2.使用触发器:INSERT触发器、UPDATE触发器、DELETE触发器3.查看触发器4.删除触发器事件1.创建事件2.修改事件3.删除事件【项目案例】图书馆借还书管理数据库的编程总结课程内容,重申重点、难点课后任务完成【项目案例】中图书馆借还书管理数据库的编程。有能力的同学完成【项目实践】中学生成绩管理数据库的编程。

项目9事务任务名称事务教学目的了解事务的概念和事务的基本特性。掌握事务控制语句的使用。了解事务并发会引起的问题。了解事务隔离级别与锁的关系。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:事务的概念和基本特性,事务的开始与结束。难点:在存储过程中实现对数据库操作的事务控制。教学内容设计课程引入:通过“事务是一组数据库操作命令语句的集合,它能够保证其中的所有数据库操作命令语句要么全部执行,要么全部不执行,目的是保证数据库的数据完整性”引入本课。授课内容:一、认识事务1.事务的概念2.事务的ACID特性二、单个事务控制1.开始事务2.完成数据库操作命令语句3.结束事务三、事务并发控制1.事务并发会引起的问题:丢失更新、脏读、不可重复读、幻读2.事务隔离级别:未提交读、提交读、可重复读、序列化3.事务隔离级别与锁的关系四、【项目案例】图书馆借还书管理数据库的事务控制1.新增读者事务控制2.借阅图书事务控制总结课程内容,重申重点、难点课后任务完成【项目案例】中图书馆借还书管理数据库的事务控制。有能力的同学完成【项目实践】中学生成绩管理数据库的事务控制。

项目10数据安全任务名称数据安全教学目的掌握用户管理和权限管理的方法。掌握数据备份与数据恢复的方法。了解日志文件。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:添加用户和授予权限的语句备份数据和恢复数据的命令难点:MySQL的权限表教学内容设计课程引入:通过“用户要访问MySQL数据库,必须先拥有登录MySQL的用户名和密码。为了确保安全访问数据库,通常需要为不同的用户授予适当的权限”引入本课。授课内容:一、认识MySQL的权限系统1.权限系统的认证过程2.权限表二、用户管理1.添加用户2.删除用户3.修改用户名4.修改用户密码三、权限管理1.授予权限2.查看权限3.转移权限4.收回权限四、数据备份与数据恢复1.备份数据表2.备份数据库3.备份全部数据库4.数据恢复五、认识日志文件1.二进制日志文件2.错误日志文件3.通用查询日志文件4.慢查询日志文件六、【项目案例】图书馆借还书管理数据库的数据安全1.用户管理2.权限管理3.数据备份和数据恢复总结课程内容,重申重点、难点课后任务完成【项目案例】中图书馆借还书管理数据库的数据安全。有能力的同学完成【项目实践】中学生成绩管理数据库的数据安全。

项目11编写Python程序访问MySQL数据库任务名称编写Python程序访问MySQL数据库教学目的掌握搭建Python编程环境的方法。熟悉PyMySQL中的主要对象及其成员方法。掌握访问MySQL数据库的步骤。学会编写实现插入、修改、删除和查询等数据操作的Python程序。了解Python的事务与异常处理。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:掌握PyMySQL访问数据库的步骤难点:理解PyMySQL中的主要对象及对象的成员函数的功能教学内容设计课程引入:通过“除了登录MySQL直接进行数据操作之外,也可以编写访问MySQL数据库的程序来完成数据操作”引入本课授课内容:搭建Python编程环境安装Python解释器安装PyCharm集成开发环境在PyCharm中创建Python项目在Python项目中安装PyMySQL数据库访问驱动模块二、使用Python访问MySQL数据库1.PyMySQL中对象Connection对象、Cursor对象、Row对象2.访问MySQL数据库的步骤(1)建立数据库连接(2)完成数据操作(3)断开数据库连接3.操作数据库中的数据查询数据(1)插入数据(2)更新数据(3)删除数据4.事务与异常处理三、【项目案例】编写Python程序访问图书馆借还书管理数据库1.将访问数据库的代码封装为公共类DBConn2.使用公共类DBConn访问图书馆借还书管理数据库总结课程内容,重申重点、难点课后任务搭建Python编程环境,完成【项目案例】中公共类DBConn的创建,并使用DBConn类访问图书馆借还书管理数据库实现查询、插入、更新和删除等数据操作。有能力的同学完成【项目实践】编写Python程序访问学生成绩管理数据库。项目12基于Python的桌面应用程序开发任务名称桌面应用程序的开发步骤及PyQt窗体中的控件教学目的了解桌面应用程序的开发步骤。了解PyQt窗体中的控件。教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:PyQt窗体中的控件以及控件的常用属性和事件难点:桌面应用程序开发的步骤教学内容设计课程引入:通过“用户与桌面应用程序之间的功能交互是通过窗体来实现,而控件是构成窗体的基本单位”引入本课。授课内容:一、桌面应用程序的开发步骤通过【例12-1】欢迎程序,理解桌面应用程序开发步骤:(1)在Python项目中安装PyMySQL、PyQt6和QtDesigner(2)使用QtDesigner工具完成界面设计(3)使用PyUIC工具将界面设计结果转换为Python代码。(4)基于转换得到的Python程序文件完成程序设计。二、PyQt窗体中的控件1.常用的控件及其功能2.控件的常用属性及其含义3.控件的常用事件及其含义总结课程内容,重申重点、难点课后任务熟悉QtDesigner工具和PyUIC命令的使用,完成“例12-1”。任务名称图书馆借还书管理系统桌面应用程序开发教学目的通过实例加强对基于数据库的Python桌面应用程序开发的理解教学方法课堂授课、班级授课教学手段多媒体教学重点难点重点:使用QtDesigner设计界面、编写Python代码实现界面功能难点:控件的事件绑定、消息响应函数的实现教学内容设计课程引入:通过提出问题“如何为校园图书馆构建高效、易用的管理系统”引入本课授课内容:1.系统功能设计2.系统主窗体开发3.书目查询窗口开发4.书目上架窗口开发5.书目维护窗口开发总结课程内容,重申重点、难点课后任务完成【项目案例】图书馆借还书管理系统桌面应用程序开发。有能力的同学完成【项目实践】学生成绩管理系统桌面应用程序开发。第1章一、单项选择题1~5 BBCAC6~10 ABDBA二、填空题1.物理独立性2.1,多3.元组(记录),属性(字段)4.205.root第2章一、单项选择题1~5 BCACA二、填空题1.逻辑结构设计2.需求分析3.命名冲突,结构冲突4.可由基本属性推导或计算得到的属性5.3NF第3章一、单项选择题1~5 DACDB6~10 BABDB二、填空题1.DECIMAL2.二进制字符串3.CREATETABLEpubinfo(book_idCHAR(6)PRIMARYKEY,titleVARCHAR(50),abstractTEXT);4.CREATETABLEinventoryLIKEstock;5.ALTERTABLEinventoryRENAMEinventory2;6.DROPTABLEinventory2;7.外键8.SETNULL9.检查10.主键第4章一、单项选择题1~5 DCBCB6~10 BCAAB二、填空题1.REPLACE2.数据表结构的字段3.WHERE4.外键5.CASCADE第5章一、单项选择题1~5 CCCDA6~10 ACDDC二、填空题1.表名.字段名称2.WHERE3.reader4.别名5.GROUPBY第6章一、单项选择题1~5 DCBAD二、填空题1.定义数据2.一对一3.基本表/表4.ALTERVIEW5.WHERE第7章一、单项选择题1~5 DAACD二、填空题1.排序2.13.唯一4.CHARVARCHAR5.自动删除第8章一、单项选择题1~5 DBAAD二、填空题1.ABXYZ2.RETURN3.FETCH4.BEFOREAFTER5.INOUU6.事件第9章一、单项选择题1~5 BBADC6~10 CACCA二、填空题1.存储引擎2.原子性3.STARTTRANSACTION或BEGINWORK4.脏读5.可重复读第10章一、单项选择题1~5 BBADB6~10 ABCAA二、填空题1.请求认证阶段2.GRANT3.CREATE,INSERT4.SHOWBINARYLOGS5.RESETMASTER第11章一、单项选择题1~5 BCCCA二、填空题1.建立数据库连接、完成数据操作、断开数据库连接。2.可能产生异常的操作、处理异常的操作、无论是否发生异常都会执行的清理操作3.占位符,在执行SQL语句时动态传递参数值第12章一、单项选择题1~5 CBCDD二、填空题1.界面设计、程序逻辑2.setupUi,retranslateUi3.将searchBtn控件的clicked事件与searchBooksByTitle成员方法绑定Python基础知识作为一门通用编程语言,Python以其简洁优雅的语法、强大的功能库以及在数据科学、人工智能、网络开发等领域的广泛应用,成为开启编程思维大门的最佳钥匙。本内容旨在提供一个极简的Python入门指引,通过“理论引导,代码实证”的学习模式,帮助各位读者快速构建起Python程序设计的核心能力。1.认识Python1.1Python语言概述Python是一种解释型、高级、通用的动态编程语言。它由荷兰计算机科学家吉多·范罗苏姆于20世纪80年代末设计,并于1991年首次发布。Python的设计哲学强调代码的可读性与简洁性,其语法结构允许程序员用比C++或Java更少的代码行数表达概念。作为一种“胶水语言”,Python能够轻松地与其他语言编写的模块进行集成。在学术界与工业界,Python已成为事实上的标准语言之一。其强大的第三方库生态系统(如用于数值计算的NumPy,用于数据分析的Pandas,用于机器学习的Scikit-learn和PyTorch)使得它在处理复杂科学计算和数据驱动任务时表现卓越。对于初学者而言,Python接近自然语言的语法极大降低了学习曲线,使我们能够专注于解决问题本身的逻辑,而非语言的形式细节。1.2Python开发环境要运行Python程序,必须构建相应的计算环境。这主要包含两个核心组件:解释器和集成开发环境(IntegratedDevelopmentEnvironment,IDE)。1.2.1安装Python解释器Python是一门解释型语言,这意味着计算机不能直接理解我们编写的Python代码。需要一个中间程序——解释器,将源代码逐行翻译成机器能够执行的指令。安装Python解释器是开展编程工作的第一步。读者应前往Python官方网站(),根据自身的操作系统(Windows或macOS)下载并安装最新的稳定版本(建议Python3.9.13)。在安装过程中,务必勾选“AddPythontoPATH”选项,以确保在操作系统的终端或命令行中能够全局访问Python指令。1.2.2安装PyCharm集成开发环境虽然仅凭解释器和简单的文本编辑器(如记事本)即可编写代码,但在实际工程与学术研究中,使用IDE能显著提升效率。IDE集成了代码编辑、语法高亮、智能提示、调试(Debugging)和版本控制等功能。本教程推荐使用JetBrains公司开发的PyCharm,读者可前往JetBrains公司官方网站下载最新的PyCharm免费版本,按照安装程序提示自行安装PyCharm。需要注意的是,首次启动时需将其Python解释器设置为上小结安装的Python3.9解释器。1.3第一个Python程序遵循计算机科学教育的传统,编写的第一个程序是致敬这个美好世界。在PyCharm中创建一个新的Python文件(通常以.py为后缀),输入以下代码并运行:【例1-1】编写一个输出“HelloWorld!”的Python程序。#1-1.py#这是一个注释,用于解释代码,解释器会忽略它

#print()是Python的一个内置函数,用于向控制台输出信息

print("Hello,World!")该程序调用了Python的内置函数print(),并将字符串字面量"Hello,World!"作为参数传递给它。将以上代码保存为1-1.py文件,通过控制台执行python1-1.py命令,运行该程序后将控制台窗口显示:Hello,World!。2.Python语言基础掌握编程语言类似于学习一门新的自然语言,需要首先理解其数据类型和控制结构。2.1常用数据类型与变量在程序设计中,数据是信息的载体,而数据类型定义了数据的性质、取值范围、以及可进行的操作。Python是动态类型语言,这意味着在声明变量时无需显式指定其类型,解释器会根据赋值自动推断。以下是Python中最基础的四种数据类型:整型:表示不带小数部分的整数,如10,-5,0。浮点型:表示带有小数部分的实数,通常用于科学计算,如3.14,-0.001,2.5e2(科学计数法)。布尔型:表示逻辑上的真假值,仅有两个取值:True和False。常用于条件判断。字符串型:表示文本序列,由单引号'或双引号"包裹,如"PythonProgramming",'A'。【例2-1】编写程序演示变量赋值与类型查看。#2-1.py#变量赋值:将数据绑定到一个标识符(变量名)上

age=19#定义整型变量

gpa=3.85#定义浮点型变量

is_freshman=True#定义布尔型变量

university="清华大学"#定义字符串变量

#使用type()函数查看变量的数据类型

print("age的数据类型为:",type(age))

print("gpa的数据类型为:",type(gpa))

print("is_freshman的数据类型为:",type(is_freshman))

#字符串(f-string)的格式化输出

print(f"学生信息:年龄:{age},GPA成绩:{gpa},学校:{university}")2.2选择结构程序的默认执行顺序是自上而下的顺序结构。选择结构(或称分支结构)允许程序根据特定条件(布尔表达式的结果)的真假,选择性地执行不同的代码块。Python使用if和else关键字来实现这一逻辑,并使用缩进来界定代码块的范围。通常,Python代码块缩进量通常是4个空格。【例2-2】编写程序演示利用选择结构判断学分绩点等级。#2-2.py

score=3.5#根据GPA分数判断成绩的等级成绩

#条件表达式会计算出True或False

ifscore>=4.0:#只有当if条件为True时执行此块

grade="A"

elseifscore>=3.7:#当if为False且此elseif为True时执行

grade="B"

elseifscore>=3.3:

grade="C"

else:#当上述所有条件都为False时执行

grade="D"

print(f"GPA{score}分对应的等级成绩为:{grade}")2.3循环结构循环结构旨在处理重复性的任务。Python提供了两种主要的循环机制:while循环和for循环。while循环:只要指定的条件为真,就持续重复执行代码块。适用于迭代次数未知,但终止条件明确的场景。for循环:用于遍历序列(如列表、字符串)中的每个元素,或者按照指定的次数进行迭代。在数值迭代中,常与range()函数配合使用。【例2-3】编写程序演示使用循环结构进行数值累加。#2-3.py#1.使用while循环,计算1到100的和

count=1

total_while=0

whilecount<=100:

total_while+=count#等同于total_while=total_while+count

count+=1

print(f"使用while循环计算的求和结果为:{total_while}")

#2.使用for循环和range(),计算1到100的和

total_for=0

foriinrange(1,101):#range(1,101)生成一个从1开始到100结束的整数序列(左闭右开区间)

total_for+=i

print(f"使用for循环计算的求和结果为:{total_for}")2.4异常处理在程序运行过程中,不可避免地会出现错误,例如除以零、尝试打开不存在的文件或处理错误的数据类型。这些运行时错误称为“异常”。如果不加处理,异常会导致程序立刻崩溃。为了增强程序的健壮性,我们需要捕获并处理这些异常。Python提供了try...except...finally结构来实现这一机制。将可能引发异常的代码放在try块中,并在except块中定义处理错误的方式。【2-4例】编写程序实现安全除法,演示处理可能出现的除零错误和类型错误。#2-4.py

dividend="10"#字符串来引发类型错误

divisor=0#0值分母引发除数为零错误

try:

#将字符串转换为整型,可能引发ValueError

num=int(dividend)

den=int(divisor)

#可能引发ZeroDivisionError

result=num/den

print(f"除法运算结果:{result}")

exceptZeroDivisionError:

#处理除数为零的情况

print("错误:除数为零错误.")

exceptValueError:

#处理输入不是有效数字的情况

print("错误:无效的输入.请确输入的被除数和除数均为数值类型.")

exceptExceptionase:

#处理其他未预料到的错误

print(f"其他错误导致的异常:{e}")

finally:

#无论是否发生异常,finally块中的代码总会执行

#常用于资源释放,如关闭文件或数据库连接

print("除法运算结束.")2.5模块导入模块是具有特定功能代码的集合,也是实现功能代码重用的重要途径。在编写Python程序时,程序员经常要导入(import)内置或第三方模块,借助导入模块所提供的功能快速实现程序设计。【2-5例】编写程序,演示通过2种方式导入模块,助力实现程序功能。#2-5.pyimportmath#方式1:导入整个模块fromrandomimportrandint#方式2:从模块中导入指定函数area=150.0radius=math.sqrt(area/math.pi)#使用math.pi获取圆周率常量,使用math.sqrt()函数计算平方根print(f"已知圆面积为:{area}")print(f"计算得出的半径为:{radius:.2f}")#使用格式化字符串保留小数点后两位输出print("正在模拟掷一枚六面骰子...")dice_roll=randint(1,6)#生成1到6之间的随机整数,模拟骰子点数print(f"骰子点数结果:{dice_roll}")3.高级数据类型在处理现实世界的复杂问题时,仅凭基本的数值和布尔类型往往捉襟见肘。我们需要一种机制来组织和存储一组相关的数据。Python提供了一系列内置的高级数据类型,通常被称为“容器”(Containers)或“数据结构”。它们包括列表、元组、字典和集合,以及功能强大的字符串类型。理解这些数据结构对于高效编程至关重要,因为算法通常依赖于特定的数据结构来实现最佳性能。3.1列表(List)列表是Python中最常用、最灵活的线性数据结构。它是一个有序的元素集合,使用方括号[]表示。列表是“可变的”(Mutable),这意味着我们可以在创建后修改其内容(添加、删除或更改元素)。列表中的元素可以是不同的数据类型,支持通过索引(Index)访问元素,并且索引从0开始。【例3-1】编写学生名单管理程序,演示列表的定义和常见操作。#3-1.py#定义一个包含学生姓名的列表

students=["Alice","Bob","Charlie","David"]

#1.访问元素(Indexing)

print(f"第1个学生为:{students[0]}")

#负数索引表示从末尾开始计数,-1为最后一个元素

print(f"最后1位学生为:{students[-1]}")

#2.切片(Slicing)-获取子列表

subset=students[1:3]#获取索引1到2的元素(左闭右开:包含1,不包含3)

print(f"学生列表索引1-2之间的学生姓名为:{subset}")#输出['Bob','Charlie']

#3.修改列表

students[1]="Bobby"#修改索引为1的元素

print(f"修改后的学生姓名列表为:{students}")

#4.常用方法

students.append("Eve")#在列表末尾添加元素

students.remove("Charlie")#删除指定值的第一个匹配项

pop_student=students.pop(0)#删除并返回指定索引的元素(默认最后一个)

print(f"最后学生列表为:{students}")

print(f"被删除的学生为:{pop_student}")

print(f"最后学生列表长度:{len(students)}")#使用len()获取长度3.2元组(Tuple)元组与列表类似,也是有序的元素集合,但使用圆括号()表示。元组的关键特性是它是“不可变的”。一旦创建,就不能修改其内容(不能添加、删除或更改元素)。这种不可变性使得元组在数据需要被保护不被意外修改时非常有用,并且在内存使用上通常比列表更高效。元组常用于表示固定长度的数据记录,例如(经度,纬度)坐标对。【例3-2】编写地理坐标表示程序,演示元组的定义和常见操作。#3-2.py#定义一个表示特定地点经纬度的元组

location_coords=(34.2655,108.9531)

#访问元素,方式与列表相同

latitude=location_coords[0]

longitude=location_coords[1]

print(f"纬度:{latitude},经度:{longitude}")

#尝试修改元组元素会引发TypeError

#location_coords[0]=35.0#取消注释此行将导致运行错误

lat,lon=location_coords#元组解构赋值:一种快速赋值的技巧

print(f"元组解构赋值获得的坐标–纬度:{lat},经度:{lon}")

single_element_tuple=(100,)#单个元素的元组需要在元素后加逗号,否则会被识别为普通括号

print(type(single_element_tuple))3.3字典(Dictionary)字典是一种用于存储“键-值对”(Key-ValuePair)的映射型数据结构,使用花括号{}表示。它类似于现实生活中的字典,通过查找“键”(如单词)来获取对应的“值”(如释义)。字典中的键必须是唯一的且不可变的,而值可以是任意数据类型。【例3-3】编写学生信息档案管理程序,演示字典的定义和常见操作。#3-3.py#定义一个字典来存储特定学生的信息

student={

"id":"2023001",

"name":"Alice",

"major":"ComputerScience",

"gpa":3.9

}

#1.通过键访问值

print(f"学生姓名:{student['name']}")

#使用get()方法访问更安全,如果键不存在返回None而不是报错

print(f"电子邮件:{student.get('email')}")

#2.添加或修改键值对

student["email"]="alice@"#添加新键值对

student["gpa"]=3.95#修改已有键的值

#3.删除键值对

delstudent["major"]

#4.遍历字典

print("当前学生信息如下:")

forkey,valueinstudent.items():#.items()方法返回字典的全键值对列表视图

print(f"{key}:{value}")

#检查键是否存在

if"id"instudent.keys():#.keys()方法返回字典的全键列表视图

print("学生信息字典包含名为’id’的键.")3.4集合(Set)集合是一个无序的、不包含重复元素的数据结构,同样使用花括号{}表示(但与字典不同,它只有值没有键)。集合主要用于数学上的集合操作,如并集、交集、差集,以及高效地去除序列中的重复项。【例3-4】编写学生选课分析程序,演示集合的定义和常见操作。#3-4.py#两个集合,分别表示选修了数学课和物理课的学生ID

math_students={"S01","S02","S03","S04","S01"}

physics_students={"S03","S04","S05","S06"}

print(f"选修了数学的学生:{math_students}")#注意,重复的"S01"会被自动去重

#1.交集(Intersection):

both_courses=math_students&physics_students#或math_ersection(physics_students)

print(f"同时选修了两门课的学生:{both_courses}")

#2.并集(Union):

all_students=math_students|physics_students#或math_students.union(physics_students)

print(f"至少选修了一门课的学生:{all_students}")

#3.差集(Difference):

only_math=math_students-physics_students

print(f"选修了数学但没选物理的学生:{only_math}")

#4.添加和删除

math_students.add("S07")

math_students.discard("S01")#如果元素不存在,不会报错3.5字符串(String)的高级特性在2.1节中我们已初步接触了字符串。实质上,字符串是由字符组成的不可变序列。这意味着字符串支持许多与列表和元组类似的操作,如索引和切片。此外,Python字符串对象提供了丰富的方法用于文本处理。【例3-5】编写程序演示字符串的常见操作。#3-5.pytext="PythonprogrammingispowerfulandFUN."

#1.基本字符串操作

print(f"字符串长度:{len(text)}")#计算字符串长度

cleaned_text=text.strip()#去除首尾空白字符

print(f"删除首尾空白字符后的字符串为:'{cleaned_text}'")

#大小写转换

print(f"转小写字母样式:{cleaned_text.lower()}")

print(f"转单词首字母大写样式:{cleaned_text.title()}")

#2.字符串分割与合并

#将句子按空格分割成单词列表

words=cleaned_text.split("")

print(f"分割成的单词列表:{words}")

#将单词列表重新组合成句子,用连字符连接

joined_text="-".join(words)

print(f"用连字符进行连接后的文本:{joined_text}")

#3.查找与替换

#查找子字符串的位置,未找到返回-1

position=cleaned_text.find("powerful")

print(f"'powerful'子串首次出现的位置为:{position}")

#替换子字符串(注意:因为字符串不可变,这会返回一个新的字符串)

new_text=cleaned_text.replace("FUN","essential")

print(f"替换后的新字符串为:{new_text}")

#4.字符串的切片

print(f"字符串的前6个字符为:'{cleaned_text[:6]}'")

print(f"反转后的字符串为:'{cleaned_text[::-1]}'")4.函数在解决复杂问题时,将庞大的任务分解为若干个独立、可复用的小型子任务是基本的工程思维。在编程中,这种子任务的具体实现形式就是函数。4.1函数声明与定义从理论层面看,函数是一段组织好的、旨在实现单一特定功能的代码块。它接收零个或多个输入(又称参数),经过一系列计算处理,最终产生一个输出(又称返回值)。使用函数的主要目的是提高代码的复用性和可读性。定义好一个函数,就可在程序的任何地方多次调用它,而无需重复编写相同的代码逻辑。在Python中,我们使用def关键字来定义函数。【例4-1】编写程序演示函数定义的语法。#4-1.pydeffunction_name(parameter1,parameter2,...):

"""

函数的文档字符串(Docstring):用于描述函数的功能、参数和返回值。

"""

#函数体:执行具体任务的代码块

#...

returnresult#返回值(可选)4.2函数调用与返回值函数的定义仅仅描述了函数“应该做什么”,而要让函数真正执行,必须进行调用。调用是通过书写函数名并在其后加上圆括号(其中包含必要的参数值)来实现的。return语句用于结束函数的执行,并将一个值返回给调用者。如果函数体中没有return语句,或者return后没有接任何值,Python默认返回特殊值None。【例4-2】编写一个计算圆的面积的函数,演示函数定义与调用。#4-2.pyimportmath#导入数学模块以使用圆周率pi

#1.函数定义

defcalculate_circle_area(radius):

"""

计算给定半径的圆的面积。

Args:

radius(float):圆的半径,必须为非负数。

Returns:

float:计算得到的圆面积;如果输入无效返回None。

"""

#进行输入验证

ifnotisinstance(radius,(int,float))orradius<0:

print("错误:半径输入出错,半径必须为一个非负的数值.")

returnNone

area=math.pi*(radius**2)

returnarea#返回计算结果

#2.函数调用

r1=5.0

#调用函数,并将返回值赋给变量area1

area1=calculate_circle_area(r1)

print(f"半径为{r1}的圆的面积为:{area1:.2f}")

#3.调用并直接打印返回值

print(f"半径为10.0的圆的面积为:{calculate_circle_area(10.0):.2f}")

#4.演示无效输入

invalid_result=calculate_circle_area(-3)

print(f"以无效半径作为实际参数调用函数后,函数的返回值为:{invalid_result}")4.3参数传递机制参数是调用者向函数内部传递信息的桥梁。Python提供了高度灵活的参数传递机制,理解这些机制对于编写通用性强的函数至关重要。形式参数:在函数定义时使用的变量名(如上例中的radius)。实际参数:在函数调用时传递给函数的具体值(如上例中的5.0或10)。4.3.1位置参数这是最常见的参数传递方式。在调用函数时,实参按照函数定义中形参的顺序依次赋值。4.3.2关键字参数为了提高代码在调用时的可读性,并允许不按顺序传递参数,可以使用关键字参数。在调用时明确指定“形参名=实参值”。4.3.3默认值参数在定义函数时,可以为某些参数指定默认值。在调用时,如果未提供该参数的实参,则使用默认值。这极大地增强了函数的灵活性,使得某些参数成为可选参数。【例4-3】编写一个计算复利的函数,演示不同的参数传递机制。#4-3.py#形式参数说明

#principal:本金(位置参数,必须提供)

#rate:年利率(位置参数,必须提供)

#years:投资年限(默认值参数,默认为1年)

#times_per_year:每年复利次数(默认值参数,默认为1次)

defcalculate_compound_interest(principal,rate,years=1,times_per_year=1):

"""计算复利终值。"""

final_amount=principal*((1+rate/times_per_year)**(times_per_year*years))

returnfinal_amount

#1.使用位置参数调用(依赖顺序)

#计算本金1000,年利率5%,默认1年1次复利

amount1=calculate_compound_interest(1000,0.05)

print(f"复利值1:${amount1:.2f}")

#2.混合使用位置参数和默认参数

#计算本金1000,年利率5%,投资10年,默认每年1次复利

amount2=calculate_compound_interest(1000,0.05,10)

print(f"复利值2:${amount2:.2f}")

#3.使用关键字参数调用

#计算本金1000,年利率5%,投资5年,每年复利12次(月复利)

#注意:如果混合使用,位置参数必须在关键字参数之前定义和传值

amount3=calculate_compound_interest(1000,0.05,times_per_year=12,years=5)

print(f"复利值3:${amount3:.2f}")4.4变量作用域(Scope)变量在程序中并不是任何地方都可见,理解变量作用域对于避免变量命名冲突和理解数据流动至关重要。根据定义位置和作用域范围,Python语言的变量分为两类:全局变量:在函数外部定义的变量,在整个程序中均可见。局部变量:在函数内部定义的变量(包括函数参数),仅在该函数内部可见。函数执行结束后,局部变量的生命周期即告终止。4.5内置函数(Built-inFunctions)Python解释器自带了大量高效、经过优化的内置函数,它们是Python标准库的重要组成部分。熟练使用这些函数可以避免“重复造轮子”。我们已经接触过print(),type(),len(),int(),range()等。【例4-4】编写Python程序,演示常用数据处理内置函数。#4-4.py#数值列表

numbers=[15,2,38,-5,10,2]

print(f"原列表:{numbers}")

#1.统计类

print(f"numbers列表的总和为:{sum(numbers)}")#求和函数

print(f"numbers列表的最大值为:{max(numbers)}")#最大值函数

print(f"numbers列表的最小值为:{min(numbers)}")#最小值函数

print(f"-5的绝对值为:{abs(-5)}")#绝对值函数

#2.排序类

#sorted()返回一个新的已排序列表,不改变原列表

sorted_numbers=sorted(numbers,reverse=True)#降序排列

print(f"排序后的列表:{sorted_numbers}")

#3.组合类

names=["Alice","Bob","Charlie"]

scores=[95,88,92]

zipped_data=list(zip(names,scores))#将多个可迭代对象打包组合成元组构成的列表

print(f"打包后的元组列表:{zipped_data}")#输出:[('Alice',95),('Bob',88),('Charlie',92)]5.类与对象随着软件规模的扩大,仅凭函数来组织代码会变得愈发困难,数据与操作数据的函数往往处于分离状态。面向对象编程(OOP)提供了一种更贴近现实世界认知的软件设计范式。5.1面向对象编程概述面向对象编程的核心思想是将数据和操作数据的方法封装在一个称为“对象”(Object)的实体中。程序则由一系列相互交互的对象组成。为了理解OOP,我们需要区分2个核心概念:类(Class):是对一类事物的抽象描述,是创建对象的“蓝图”或“模板”。它定义了该类事物共同具备的属性和方法。例如,“学生”这个概念就是一个类。对象(Object)/实例(Instance):是根据类创建的具体存在。如果“学生”是类,那么“学号为2023001的张三同学”就是一个具体的对象。5.2类的定义在Python中,使用class关键字定义类。类名通常采用“驼峰命名法”,即每个单词的首字母大写。类的内部包含两个主要部分:属性(Attributes):用于存储对象状态的数据变量。方法(Methods):用于定义对象行为的函数。在类中定义方法时,第一个参数通常约定为self,它代表类的实例本身。5.3类的实例化与初始化5.3.1对象的实例化创建类的实例的过程称为实例化。其语法类似于调用函数:对象名=类名()。5.3.2__init__()方法当一个对象被实例化时,通常需要立即初始化它的状态(给属性赋值)。Python提供了一个特殊的方法__init__(又称构造函数),在创建新对象时会自动调用该方法。注意:__init__前后各有两个下划线,在Python中这样的命名特点表示其为一类特殊方法(MagicMethods)。【例5-1】编写定义一个学生类演示类的定义、实例化及初始化。#5-1.pyclassStudent:

"""

代表一个大学生的类。

"""

#类属性:所有实例共享的数据

university_name="清华大学"

def__init__(self,student_id,name,major):

"""

初始化方法,在创建新Student对象时被调用。

Args:

student_id:学号

name:姓名

major:专业

"""

#实例属性:每个对象独有的数据,使用self.属性名进行绑定

self.student_id=student_id

=name

self.major=majo

温馨提示

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

评论

0/150

提交评论