版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python编程与人工智能基础项目1搭建编程基石,解锁基础语法主讲教师:施莉莉1项目1搭建编程基石,解锁基础语法项目2掌握分支逻辑,驾驭循环结构项目3精通序列映射,驰骋集合字典项目4精通函数定义,开启模块编程项目5领悟面向对象,构建类与对象项目6剖析字符奥秘,玩转文本处理项目7解密文本模式,执掌正则表达式项目8奠基科学计算,通晓数组运算项目9洞察数据价值,制胜数据分析全套可编辑PPT课件学习目标2知识目标1.了解Python语言特点;2.掌握Python安装环境配置;3.熟悉注释、语句结束规则;4.掌握键盘输入、打印输出、变量、数据类型和运算符等基础语法知识。能力目标1.能够独立完成Python环境搭建;2.能运用基础语法编写包含输入输出、变量操作、数据类型转换和运算符使用的简单程序。素养目标•培养逻辑思维和严谨的编程习惯;提升对编程基础概念的理解和运用能力。项目概述3以『师生互动式猜数字游戏』为载体◆在编程入门的旅程中,稳定的开发环境与扎实的基础语法是迈出第一步的核心前提。◆任务1-1初识Python与环境搭建:解释器下载安装、环境变量配置、IDE选择与安装。◆任务1-2制作简单猜字游戏:输入输出、类型转换、变量、数据类型、运算符等基础语法。项目实战载体:简单猜字游戏#用Python设计简单猜字游戏(项目主线)temp=input('不妨猜一猜老师现在心里想的是哪个数字:')guess=int(temp)#字符串→整数ifguess==8:#关系运算符print('哈哈,猜中了也没有奖励!!!')else:print('猜错啦,老师现在心里想的是8!')print('游戏结束,不玩啦!')Python编程与人工智能基础任务1-1初识Python与环境搭建主讲教师:施莉莉41.1.1Python语言及其特点51.Python语言的来源◆Python由荷兰人吉多·范罗苏姆于1989年开发,1991年首次发布;继承ABC语言优点,语法简洁、易读易写。如今已成为Web开发、数据科学、人工智能等领域的流行语言。2.Python语言的五大特点特点说明简洁易读通过缩进区分代码块,语法清晰,关键字接近英语高级语言屏蔽底层细节,开发者可专注于问题解决解释型语言代码逐行解释执行,调试方便,修改后立即生效跨平台性支持Windows、MacOS、Linux等系统,代码移植性强丰富库模块强大的标准库和第三方库,覆盖数据分析、网络编程等领域1.1.1Python版本介绍6Python2.x与3.x版本发布时间状态与说明Python2.x2000年曾广泛应用,存在编码等问题,已于2020年停止支持Python3.x2008年不兼容2.x;改进字符串编码、语法规范;目前主流版本★建议从官网下载并使用Python3.x的最新版本◆官网:◆各版本持续改进语言特性:如3.7引入数据类、3.10增加模式匹配功能。◆开发者需根据项目需求、依赖库兼容性选择合适的Python版本。1.1.2Python运行原理7解释型语言的执行流程1.代码输入编写Python源代码,以.py为文件扩展名保存↓2.编译成字节码解释器将源代码编译成字节码(.pyc文件),跨平台的低级指令集,提高重复执行加载速度↓3.字节码执行Python虚拟机(PVM)逐行解释执行,负责指令解析、内存管理和异常处理↓4.与底层交互通过标准库或第三方库(os、socket)调用操作系统接口,实现文件、网络等底层操作执行流程:源代码→字节码→PVM解释执行→系统交互(具备跨平台、易调试、灵活开发的优点)1.1.3Python开发环境8常用开发环境对比开发环境特点适用场景IDLEPython自带,无需安装,轻量简洁初学者入门首选Anaconda3内置科学计算库;含JupyterNotebook和Spyder数据科学、机器学习PyCharmJetBrains出品,功能强大;社区版免费大型项目、专业开发VSCode轻量级编辑器,插件丰富,多语言支持通用开发◆初学者建议从IDLE开始,专业开发推荐PyCharm或VSCode,数据科学常用JupyterNotebook。★动一动:请选择并动手安装1-2个Python开发环境,同时运行代码。1.1.4Python编程规范9六大编程规范1.严格缩进缩进是语法的重要组成部分,通常以4个空格为单位2.分模块导入每个import语句只导入一个模块,便于依赖管理3.合理使用空格与空行运算符两侧、逗号后加空格;类、函数定义后加空行4.避免过长语句过长代码拆分为多行,使用续行符\或圆括号5.善用括号复杂表达式中使用括号明确运算顺序6.规范注释单行用#;多行用三重引号'''或""";对关键代码必要说明素养小贴士:编程规范(PEP8)是严谨、协作的工程师文化的起点,培养书写规范代码的基本职业素养。1.1.5Python扩展库10常用扩展库一览库名用途NumPy多维数组与矩阵运算基础库,数值计算效率高Pandas数据处理与分析核心库,数据读取、清洗、统计Matplotlib主流绘图库,绘制折线图、柱状图、散点图等Scikit-learn机器学习库,分类、回归、聚类、降维等算法TensorFlow谷歌深度学习框架,构建训练神经网络Django/FlaskWeb框架:Django功能完善,Flask轻量灵活Requests易用的HTTP库,网络数据采集与处理◆Python标准安装包仅含标准库,扩展库(第三方库)可按需安装。1.1.5扩展库的安装方法11方式一/方式二#1.使用pip安装(官方包管理工具)pipinstall包名pipinstallnumpy#2.使用conda安装(Anaconda用户)condainstall包名condainstallpandas方式三:源代码安装#3.从源代码安装pythonsetup.pyinstall#GitHub仓库克隆后安装gitclone/cd仓库名pythonsetup.pyinstall◆pip是Python官方包管理工具;conda适合Anaconda/Miniconda用户。◆源代码安装适用于未发布到PyPI/Conda的包或需要自定义安装的场景。◆PyPI():Python第三方库仓库,可查找安装各种扩展库。★想一想:除了上述常用扩展库和安装方法,还有其他实用的库或安装方法吗?任务1-1关键步骤:环境搭建12四步完成环境搭建步骤1下载解释器访问/downloads下载适配系统的稳定版;勿从不知名网站下载↓步骤2安装解释器双击安装包;Windows务必勾选AddPython.exetoPATH!↓步骤3验证安装命令行输入python--version,显示版本号即成功↓步骤4选择IDE新手用IDLE:File→NewFile→写代码→Save→Run(F5)第一个程序print("HelloPython!")#在IDLE中运行第一个程序,验证环境搭建成功注意:Windows不勾选PATH会报『python不是内部或外部命令』,重新安装并勾选即可。Python编程与人工智能基础任务1-2制作简单猜字游戏主讲教师:施莉莉131.2.1注释与语句结束14注释与语句结束示例#这是一个单行注释print("HelloWorld!")#行末注释:打印输出HelloWorld!"""这是一个多行注释可以用来解释一段代码的功能"""a=3;b=5;print(a+b)#一行多语句用分号分隔(不推荐常用)◆注释:对代码的解释说明,便于团队协作与维护;单行注释以#开头,多行注释用三重引号括起来。◆语句结束:一条语句占一行,换行即结束;一行多条语句需用分号;分隔,但会降低可读性。◆建议在实际开发中遵循『一行一语句』的规范写法。◆单行注释也可以放在一行代码的末尾,就是行末注释。1.2.2输入函数input()15input()函数用法name=input("请输入你的名字:")#基本用法:变量=input(提示信息)age=int(input("请输入你的年龄:"))#返回字符串,需int()转换成整数temp=input('不妨猜一猜老师现在心里想的是哪个数字:')#猜字游戏输入guess=int(temp)#将字符串类型转换成整型◆基本用法:变量=input([prompt]),prompt为提示信息,显示在输入前。★返回值类型:input()获取的输入默认是字符串类型!◆需要数值计算时,必须用int()、float()等类型转换函数转换。◆猜字游戏中:temp保存输入的字符串,int(temp)转换后才能与数字8比较。1.2.2输出函数print()16print()函数:sep与end参数print("苹果","香蕉","橙子",sep=";")#输出:苹果;香蕉;橙子print("你好",end="/")#修改结束符,两条print输出同一行print("中国")#输出:你好/中国print("HelloWorld!")#默认sep=空格、end=换行◆基本用法:print(*objects,sep='',end='\n'),objects为打印对象,多个用逗号隔开。◆sep:分隔符参数,默认空格;修改后改变对象之间的分隔符号。◆end:结束符参数,默认换行;修改后可实现多条print输出在同一行。➤输出结果:苹果;香蕉;橙子/你好/中国1.2.2格式化输出17占位符%方式#(1)占位符方式name="张三"age=20print("姓名:%s,年龄:%d"%(name,age))#输出:姓名:张三,年龄:20f-string方式#(2)f-string方式name="李四"age=25print(f"姓名:{name},年龄:{age}")#输出:姓名:李四,年龄:25◆%s表示字符串,%d表示整数,%f表示浮点数。◆f-string:字符串前加f,用花括号{}包裹变量,更加简洁直观。★f-string在Python3.6及以上版本中广泛使用(推荐)。1.2.3常量与变量18变量名命名规则◆只能包含字母、数字和下划线,且不能以数字开头;◆必须以字母、汉字或下划线开头;◆不能有空格或其他符号;◆不能使用关键字(如if、for);◆大小写敏感:student与Student不同;◆不建议用内置名:id、max、len、list等。变量的赋值与使用my_variable=10#合法的变量名a=5b=a+3print(b)#输出8s1="Hello"s2="World"s3=s1+""+s2print(s3)#HelloWorld常量:不能改变的字面值,如数字5、字符串Helloworld、元组(4,5,6)。变量:值可以变化的量;Python中变量的类型也可以随时改变,通过变量名访问。1.2.4数据类型(一):基本类型19类型说明示例int(整数)表示整数,可进行加减乘除等算术运算10、-5float(浮点数)带小数部分的数,注意运算精度问题3.14、-2.5complex(复数)表示数学中的复数概念3+4jstr(字符串)单引号/双引号/三引号定界;单个字符也是字符串'Hello'、"A"bool(布尔值)只有True和False,用于条件判断和逻辑运算;首字母必须大写True、False布尔值示例a=5b=3result=a>bprint(result)#输出True——比较运算产生布尔值1.2.4数据类型(二):容器类型20类型特征创建方式示例list(列表)有序、可变方括号[][1,"apple",3.14]tuple(元组)有序、不可变圆括号()(1,"apple",3.14)dict(字典)键值对集合花括号{key:value}{"name":"张三","age":20}set(集合)无序、不重复花括号{}或set(){1,2,2,3}→{1,2,3}容器类型创建示例my_list=[1,"apple",3.14]#列表:可通过索引访问,可增删改my_tuple=(1,"apple",3.14)#元组:一旦创建,元素不能修改my_dict={"name":"张三","age":20}#字典:通过键访问对应的值my_set={1,2,2,3}#集合:自动去重→{1,2,3}列表、元组、字典、集合是Python内置的容器对象,可包含多个元素;后续项目将逐一深入学习。1.2.5运算符(一):算术运算符21运算符描述+两个对象相加/连接-相减或得到负数*相乘/序列重复/两个数相除%取余;字符串格式化**幂:x**y返回x的y次幂//取整:返回商的整数部分算术运算符示例print(1+1)#输出2print('a'+'b'+'c')#输出abc(字符串连接)print(3*3)#输出9print('china'*3)#chinachinachinaprint(3/2)#输出1.5(除法)print(15//4)#输出3(取整)print(15.0//4)#输出3.0(实数取整)print(29%3)#输出2(求余)print(2**3)#输出8(幂运算)注意:+还可用于列表、元组、字符串的连接,但不支持不同类型对象相加。*可用于序列与整数的乘法,表示元素重复倍增。1.2.5运算符(二):关系运算符22关系运算符:==!=><>=<=x=10y=20print(x==y)#输出False(等于)print(x!=y)#输出True(不等于)print(x>y)#输出False(大于)print(x<y)#输出True(小于)print(x>=y)#输出False(大于等于)print(x<=y)#输出True(小于等于)◆关系运算符包括:等于==、不等于!=、大于>、小于<、大于等于>=、小于等于<=。◆返回值为布尔类型:True或False。★特别注意:两个等号==表示判断相等;一个等号=是赋值!1.2.5运算符(三):逻辑运算符23运算符描述and逻辑与:两个操作数都为True时结果为True,否则为Falseor逻辑或:只要有一个为True结果就为True;两个都是False才为Falsenot逻辑非:对单个布尔值取反逻辑运算符示例p=Trueq=Falseprint(pandq)#输出Falseprint(porq)#输出Trueprint(notp)#输出False1.2.5运算符(四):赋值运算符24运算符等价于=简单赋值:m=10+=m=m+n-=m=m-n*=m=m*n/=m=m/n//=m=m//n%=m=m%n**=m=m**n赋值运算符示例m=10n=2m+=n#m=m+n,结果为12m-=n#m=m-n,结果为10m*=n#m=m*n,结果为20m/=n#m=m/n,结果为10.0m//=n#m=m//n,结果为5m%=n#m=m%n,结果为1m**=n#m=m**n,结果为1注意:以上示例中m一直取初始值10进行运算。想一想:如果根据各步骤运算后的m值来计算,每一行的m值会是多少?1.2.5运算符(五):成员/身份/位运算符25成员运算符my_list=[10,20,30]print(20inmy_list)#Trueprint(40notinmy_list)#True身份运算符list1=[1,2,3]list3=list1print(list1islist3)#True(同一对象)位运算符x=5#二进制:0101y=3#二进制:0011print(x&y)#输出1(按位与)print(x|y)#输出7(按位或)print(x^y)#输出6(按位异或)print(~x)#输出-6(按位取反)print(x<<2)#输出20(左移)print(x>>2)#输出1(右移)in/notin判断元素是否在序列中;is/isnot判断两个对象是否是同一个对象(内存地址相同)。1.2.6Python内置函数26类别常用函数说明类型转换int()/float()/str()/bool()转换为对应类型,无需导入数学函数abs()/max()/min()/sum()/round()/pow()绝对值、极值、求和、四舍五入、幂输入输出input()/print()标准输入输出序列操作len()/range()/sorted()/reversed()/enumerate()/zip()长度、序列生成、排序等对象操作type()/isinstance()/id()/dir()/help()类型查询、实例检查等其他常用eval()/map()/filter()/open()执行表达式、映射、过滤、文件内置函数使用示例print(abs(-10))#输出:10(数学函数)print(max([1,2,3]))#输出:3print(type([1,2]))#输出:<class'list'>(对象操作)print(sorted([3,1,2]))#输出:[1,2,3](序列操作)任务1-2实现:猜字游戏分步实现27步骤1-2:输入与类型转换#步骤1:提示用户猜测并获取输入temp=input('不妨猜一猜老师现在心里想的是哪个数字:')#步骤2:将输入的字符串转换为整数guess=int(temp)步骤3-4:判断与输出#步骤3:用if-else判断猜测结果ifguess==8:print('哈哈,猜中了也没有奖励!!!')else:print('猜错啦,老师现在心里想的是8!')#步骤4:输出游戏结束提示print('游戏结束,不玩啦!')◆步骤1:input()提示语要清晰,让用户知道该输入数字;变量名简单好记。◆步骤2:必须转换!input()默认获取字符串;int()转换后才能与数字8比较。◆步骤3:==是判断相等,千万别写成=(赋值会出错);if/else后加冒号,代码要缩进。◆步骤4:print()放在if-else外面(不缩进),保证无论猜对猜错都执行。➤运行结果:输入8→猜中提示+游戏结束;输入5→猜错提示+游戏结束。项目小结28✔任务1-1聚焦Python基础认知与环境准备:语言背景与特点、运行原理、开发环境、编程规范与扩展库。✔任务1-2通过猜字游戏实践基础语法:注释与语句结束、输入输出、常量与变量、数据类型、运算符、内置函数。✔实现了从理论认知到代码实操的过渡:固定谜底→用户猜测→结果反馈的完整逻辑。★当前程序只能猜一次;如何让用户多次猜测直到猜对?——引出下一项目的循环结构。素养小贴士:掌握基础语法是建造数字大厦的第一块砖。从HelloWorld开始,培养脚踏实地、一丝不苟的工匠精神。拓展阅读29资源网址说明Python官方文档/3/语言特性、标准库权威资料PyPI/第三方库仓库,查找安装扩展库Anaconda/集成科学计算库的发行版StackOverflow/全球最大编程问答社区Python中文社区/国内开发者社区与学习资源拓展思考:Python的扩展库非常丰富,如何选择合适的扩展库来解决实际问题?在安装和使用扩展库时,可能会遇到哪些问题?如何解决?谢谢聆听感谢聆听,请继续学习下一个项目30Python编程与人工智能基础项目2掌握分支逻辑,驾驭循环结构主讲教师:施莉莉1学习目标2知识目标1.理解分支结构的概念,掌握if、elif、else语句的语法和使用场景;2.理解循环结构的概念,掌握for循环和while循环的语法和使用场景;3.理解range()函数的作用及其参数含义;4.掌握循环控制语句,理解break、continue在循环中的作用;5.理解分支与循环的嵌套使用,能够编写多层嵌套代码。能力目标1.能够根据实际问题编写if...elif...else分支结构,解决多条件判断问题;2.能够使用for循环遍历列表、字符串等可迭代对象,使用while循环实现条件控制的重复任务;3.能够使用break和continue控制循环的执行流程。素养目标•培养逻辑思维能力与编程的严谨性、规范性,通过实践不断优化程序逻辑和性能。项目概述3以『学生成绩管理系统』为载体◆在教育管理与数据分析场景中,对学生成绩进行自动化处理是常见需求。◆任务2-1成绩等级判断:if...elif...else多分支语句,实现成绩等级划分。◆任务2-2成绩求和与计数:while循环,实现连续成绩输入与统计。◆任务2-3综合成绩统计:for循环+分支嵌套,实现等级统计与平均分计算。项目实战载体:简单成绩管理系统#用Python设计简单成绩管理系统(项目主线)score=int(input("请输入学生的成绩:"))#分支判断成绩等级ifscore>=90:print("优秀")elifscore>=60:print("及格")else:print("不及格")#循环统计:多个学生成绩的求和、计数与平均分计算Python编程与人工智能基础任务2-1成绩等级判断主讲教师:施莉莉42.1.1简单if语句5语法结构if条件表达式:#条件为真时执行的代码块代码语句示例x=10ifx>5:print("x大于5")#输出:x大于5◆当条件表达式的结果为True时,执行if语句块中的代码;◆如果为False,则跳过该代码块,继续执行后续代码。★注意:if行末的冒号:不可缺少,代码块必须缩进。2.1.2if...else双分支语句6语法结构if条件表达式:#条件为真时执行代码语句else:#条件为假时执行代码语句示例x=3ifx>5:print("x大于5")else:print("x小于或等于5")#输出:x小于或等于5◆当条件表达式为True时,执行if代码块;为False时,执行else代码块。◆二者必选其一,执行完后跳出整个结构,继续执行后续代码。◆双分支适合『非此即彼』的判断场景,如及格/不及格、通过/不通过。2.1.3if...elif...else多分支语句7语法结构if条件表达式1:代码语句#条件1为真时执行elif条件表达式2:代码语句#条件1为假且条件2为真时执行...#可以有多个elifelse:代码语句#前面所有条件都为假时执行◆程序依次检查每个条件表达式,一旦某个条件为True,就执行对应的代码块;◆执行后跳出整个if...elif...else结构,不再判断后续条件;◆如果所有条件都为False,则执行else代码块。➤多分支适合区间划分类问题:成绩等级、BMI分级、税率档位等。2.1.3在成绩等级判断中的应用8成绩等级判断score=85ifscore>=90:print("优秀")elifscore>=80:print("良好")#执行此分支elifscore>=60:print("及格")else:print("不及格")#输出:良好分数范围等级90分及以上优秀80-89分良好60-79分及格60分以下不及格◆首先检查score>=90是否为真;◆为假则继续检查score>=80,以此类推;◆直到找到满足条件的分支或执行else分支。判断顺序:必须从高等级到低等级依次判断!一旦某个条件满足,就执行对应代码块并跳出整个结构。素养小贴士:程序的分支判断,如同发展中的科学决策。精准的条件判断是『精准施策』的微观体现,培养在复杂情境中审慎分析、做出最优选择的能力。2.1.4嵌套if语句9嵌套if语句的语法结构单层嵌套if条件表达式1:#第一层判断if条件表达式2:#第二层判断(嵌套)代码语句1#条件1和条件2都为真时执行else:代码语句2#条件1为真,条件2为假时执行else:代码语句3#条件1为假时执行◆if语句嵌套:在一个if语句的代码块内部再包含另一个或多个if语句;◆通过不同层次的条件组合,实现更复杂的条件判断逻辑;★内层代码块比外层再多一层缩进,层次必须清晰。2.1.4嵌套if语句的应用10成绩等级+性别提示score=int(input("请输入学生的成绩:"))gender=input("请输入学生的性别(男/女):")ifscore>=90:ifgender=="男":print("男同学成绩优秀,继续保持!")else:print("女同学成绩优秀,太棒啦!")else:ifgender=="男":print("男同学要加油赶上啦!")else:print("女同学后面好好努力呀!")◆第一层:根据成绩判断等级;◆第二层:在每个等级内部,再根据性别输出不同提示;◆嵌套if让程序根据更细致的情况做出不同响应。问一问:①多层嵌套时代码块的对齐(缩进)为何至关重要?缩进错误会导致什么后果?②除了嵌套,是否有更清晰的结构(如elif)来实现复杂逻辑?任务2-1实现:成绩等级判断11四步完成成绩等级判断步骤1获取用户输入input()返回字符串类型,需用int()转换为整数↓步骤2规划判断逻辑if...elif...else从高等级到低等级依次判断↓步骤3输出等级信息print(f"该学生的成绩等级为:{grade}")↓步骤4整合与测试组合成完整程序,输入不同范围成绩多次测试完整代码score=int(input("请输入学生的成绩:"))ifscore>=90:grade="优秀"elifscore>=80:grade="良好"elifscore>=60:grade="及格"else:grade="不及格"print(f"该学生的成绩等级为:{grade}")Python编程与人工智能基础任务2-2成绩求和与计数主讲教师:施莉莉122.2.1while循环语句13语法结构while条件表达式:#循环体:条件为True时#重复执行的代码块代码语句示例count=0whilecount<5:print(count)count=count+1#输出:01234◆首先检查条件表达式的值,为True则执行循环体中的代码;◆循环体执行完毕后,再次检查条件……重复直到条件为False,循环终止;◆示例中count<5是循环条件:count从0开始每次+1,变为5时条件为False,循环终止。★动一动:编写『数字累加器』——反复输入数字,输入0时停止并输出总和。思考:循环正确结束的关键是什么?2.2.2变量的初始化和更新14变量初始化total_score=0#成绩总和(累加器)student_count=0#学生人数(计数器)变量更新循环中的更新whileTrue:score=int(input("请输入学生的成绩(输入-1结束):"))ifscore==-1:break#跳出循环total_score=total_score+score#成绩累加student_count=student_count+1#人数计数想一想:循环开始前为什么必须给『累加器』和『计数器』赋初始值?忘记初始化直接写total=total+num,程序会报什么错误?2.2.3条件判断在循环中的应用151.循环终止条件whileTrue:score=int(input("请输入学生的成绩(输入-1结束):"))ifscore==-1:break#输入-1时跳出循环,避免无限循环#其他代码...2.输入有效性判断whileTrue:score=int(input("请输入学生的成绩(输入-1结束):"))ifscore==-1:breakifscore<0orscore>100:#成绩超出合理范围print("输入的成绩无效,请输入0-100之间的数字。")continue#跳过本次循环,重新输入total_score+=score任务2-2实现:连续输入与统计(一)16步骤1-3:初始化、循环结构与输入验证步骤1变量初始化total_score=0;student_count=0↓步骤2构建while循环whileTrue创建无限循环,在循环内部处理输入↓步骤3输入验证与转换校验是否为整数(允许-1),否则提示重新输入步骤1-3代码total_score=0student_count=0whileTrue:score_input=input("请输入学生的成绩(输入-1结束):")ifnotscore_input.lstrip('-').isdigit():#非整数输入print("输入无效,请输入一个有效的数字(整数)。")continuescore=int(score_input)#转换为整数任务2-2实现:连续输入与统计(二)17步骤4判断终止条件ifscore==-1:break,-1不计入↓步骤5范围校验与累计0-100范围内:total_score+=score↓步骤6输出结果循环结束后输出总和与人数想一想:①whileTrue循环如何终止?输入-1的作用是什么?②如何将while循环改写为for循环实现相同功能?两种循环的适用场景有何区别?完整代码total_score=0student_count=0whileTrue:s=input("请输入成绩(-1结束):")ifnots.lstrip('-').isdigit():continuescore=int(s)ifscore==-1:breakif0<=score<=100:total_score+=scorestudent_count+=1print(f"成绩总和:{total_score}")print(f"学生总人数:{student_count}")运行结果#运行示例请输入成绩(-1结束):85请输入成绩(-1结束):92请输入成绩(-1结束):-1成绩总和:177学生总人数:2Python编程与人工智能基础任务2-3综合成绩统计主讲教师:施莉莉182.3.1for循环语句19语法结构for循环变量in可迭代对象:#循环体:重复执行的代码块代码语句◆for循环用于遍历可迭代对象(列表、字符串、元组、字典等);◆也可配合range()函数按指定次数循环;◆每次循环,循环变量依次取可迭代对象中的下一个值;➤循环次数确定时优先用for;次数不定、依赖条件时用while。三种典型用法#遍历列表fruits=["苹果","香蕉","橙子"]forfruitinfruits:print(fruit)#遍历字符串forcharin"Hello":print(char)#按次数循环(使用range)foriinrange(3):print(f"第{i+1}次循环")2.3.1range()函数20range()函数的三种形式形式含义示例range(stop)生成从0到stop-1的整数序列range(5)→0,1,2,3,4range(start,stop)生成从start到stop-1的整数序列range(3,8)→3,4,5,6,7range(start,stop,step)生成步长为step的整数序列range(0,11,2)→0,2,4,6,8,10使用示例foriinrange(5):#输出:01234print(i,end="")foriinrange(3,8):#输出:34567print(i,end="")foriinrange(0,11,2):#输出:0246810print(i,end="")range()函数常与for循环结合使用,用于控制循环次数。2.3.1for循环在任务3中的应用21场景:已知学生数量student_count=int(input("请输入学生数量:"))foriinrange(student_count):score=int(input("请输入成绩:"))#分支判断等级并统计◆range(student_count)生成从0到student_count-1的整数序列;◆循环次数等于学生数量;◆循环变量i仅用于控制循环次数,不关心具体值。for循环与while循环对比对比项for循环while循环适用场景已知循环次数或遍历序列次数不定、由条件控制循环结束序列取完后自动结束条件为False时结束典型应用遍历列表、固定次数统计连续输入直到标志值(如-1)经验法则:能确定循环次数用for,需要条件驱动用while。2.3.2循环控制语句22break语句#break:立即退出整个循环foriinrange(5):ifi==3:breakprint(i)#输出:012continue语句#continue:跳过本次循环剩余代码foriinrange(5):ifi%2==0:continueprint(i)#输出:13在任务2-3中的应用for_inrange(student_count):score=int(input("请输入成绩:"))ifscore<0orscore>100:print("成绩无效,跳过本次输入!")continue#跳过无效成绩的统计#正常统计逻辑...议一议:如何用break实现『找到第一个不及格成绩就停止』?如何用continue实现『跳过缺考数据再计算平均分』?2.3.3循环嵌套23循环嵌套:外层每执行一次,内层完整执行一遍示例:九九乘法表#打印九九乘法表foriinrange(1,10):forjinrange(1,i+1):print(f"{i}×{j}={i*j}",end="\t")print()#每行结束后换行在任务2-3中的潜在应用#多班级成绩统计class_count=int(input("请输入班级数量:"))for_inrange(class_count):n=int(input("请输入当前班级学生数量:"))for_inrange(n):...#输入成绩并统计◆循环嵌套:在一个循环的循环体内再包含另一个循环;◆用于处理多维数据或复杂逻辑(如多班级×多学生);◆外层循环每执行一次,内层循环从头到尾完整执行一遍;★注意:内层循环必须完整包含在外层循环体内,缩进层次分明。任务2-3实现:统计变量与等级计数24步骤1获取学生数量校验正整数,否则提示重↓步骤2初始化统计变量四个等级计数器与总成↓步骤3循环输入并统计for循环输入+if等级计数注意事项:①条件判断从高到低,避免等级判断错误;②初始化需在循环前完成,避免变量被重置;③学生数已校验为正整数,无需处理除零问题。步骤2-3代码excellent_count=0good_count=0pass_count=0fail_count=0total_score=0foriinrange(student_count):score=int(input(f"请输入第{i+1}个成绩:"))ifscore>=90:excellent_count+=1elifscore>=80:good_count+=1elifscore>=60:pass_count+=1else:fail_count+=1total_score+=score步骤4代码#步骤4:计算平均成绩ifstudent_count>0:average_score=total_score/student_count任务2-3实现:输出统计结果25步骤5:输出统计结果print("\n=====成绩统计结果=====")print(f"优秀(90+):{excellent_count}人")print(f"良好(80-89):{good_count}人")print(f"及格(60-79):{pass_count}人")print(f"不及格(<60):{fail_count}人")print(f"平均成绩:{average_score:.2f}分")运行示例请输入学生的数量:5请输入第1个学生的成绩:92请输入第2个学生的成绩:85请输入第3个学生的成绩:58请输入第4个学生的成绩:76请输入第5个学生的成绩:88=====成绩统计结果=====平均成绩:79.80分◆输入阶段:校验学生数量为正整数;◆统计阶段:for循环+if-elif-else等级计数,同时累加总分;◆输出阶段:f-string格式化输出,平均分保留两位小数(:.2f);◆无效成绩(非数字或超出0-100)不计入统计。引导思考:①当学生数量为0时,计算平均成绩会出现什么情况?怎样处理?②在for循环中嵌套if-elif-else时,条件判断的顺序是否会影响最终结果?项目小结26三大任务递进回顾任务核心语法培养能力任务2-1成绩等级判断if...elif...else多分支语句条件表达式的逻辑设计任务2-2成绩求和与计数while循环+break/continue循环控制与数据累加技巧任务2-3综合成绩统计for循环+分支嵌套嵌套结构与综合数据处理◆熟练运用分支条件判断、循环控制、输入输出等基础语法;◆培养逻辑分层思维、代码规范性意识及异常处理能力;◆为后续复杂程序开发与数据处理、自动化办公奠定坚实基础。素养小贴士:系统思维与全局观念——如同国家发展需要精准施策(分支判断)与持续推进(循环执行),编程也需在复杂条件中做出最优判断,在循环迭代中不断完善。拓展阅读:交通信号灯控制27分支结构的应用:智能信号灯iftraffic_volume>high_threshold:extend_green_light()#车流量大,延长绿灯else:reset_green_light()#恢复默认时长循环结构的应用:周期性变化whileTrue:turn_on_red_light()time.sleep(red_duration)#红灯持续turn_on_green_light()time.sleep(green_duration)#绿灯持续◆交通信号灯是城市交通管理的重要组成部分;◆系统通过传感器获取车流量数据;◆if-else分支判断是否需要调整信号灯时长;◆while循环实现信号灯的周期性变化;◆根据实时交通状况优化信号灯控制,减少拥堵。拓展阅读:自动驾驶28分支结构:判断是否采取行动ifobstacle_detected():#检测到障碍物apply_brakes()#刹车elifpedestrian_detected():#检测到行人stop_vehicle()#停车else:continue_driving()#继续行驶循环结构:持续监控道路whileTrue:ifobstacle_detected():apply_brakes()elifpedestrian_detected():stop_vehicle()else:continue_driving()time.sleep(0.1)#每0.1秒检查一次◆系统通过摄像头和雷达获取道路信息;◆if-elif-else分支判断是否需要采取行动;◆确保车辆在复杂路况下安全行驶;◆while循环持续监控,实时响应道路变化。拓展思考:你能设计一个根据实时车流量动态调整时长的更智能信号灯系统吗?如何优化分支与循环逻辑,提高系统反应速度?谢谢聆听感谢聆听,请继续学习下一个项目29Python编程与人工智能基础项目3精通序列映射,驰骋集合字典主讲教师:施莉莉1学习目标2知识目标1.掌握列表、元组、字典、集合的创建与基本操作;2.理解数据结构的底层特性(如可变性、有序性、唯一性);3.掌握嵌套数据结构(如列表中的字典)的使用方法;4.理解集合运算(交集、并集、差集)的原理。能力目标1.能根据需求选择合适的数据结构存储数据;2.熟练使用列表推导式、字典推导式简化代码;3.掌握数据结构的增删改查操作与遍历方法;4.能结合多种数据结构实现复杂逻辑。素养目标1.培养数据结构选型思维,根据场景选择最优方案;2.增强代码健壮性,关注边界条件处理,提升问题拆解能力。项目概述3以『学生信息管理系统』为载体◆合理选择数据结构是提升程序效率的关键:列表(动态数组)、元组(不可变序列)、字典(键值存储)、集合(无序唯一)。◆任务3-1学生信息管理:列表与元组存储学生基本信息,实现增删改查。◆任务3-2学生成绩管理:字典高效查询学生成绩与课程信息。◆任务3-3信息去重与筛选:集合处理课程选修的去重与关联分析。项目实战载体:学生信息管理系统#学生信息管理系统(项目主线):四大数据结构协同students=[("S001","张三",18)]#列表+元组:学生信息scores={"S001":[85,90]}#字典:成绩管理math_stu={"S001","S002","S004"}#集合:选修数学english_stu={"S001","S003","S004"}#集合:选修英语both=math_stu&english_stu#交集:共同选修print(both)#{'S001','S004'}Python编程与人工智能基础任务3-1学生信息管理主讲教师:施莉莉43.1.1列表的定义与特点5定义:由方括号[]括起来的有序、可变序列列表的创建students=[("S001","张三",18),("S002","李四",20)]mixed=[1,"Python",3.14,[1,2],True]#元素可为任意类型◆有序性:列表中的元素按顺序存储,可以通过索引访问;◆可变性:列表中的元素可以修改、添加或删除;◆异构性:列表可以包含不同类型的元素(整数、字符串、列表等);◆支持嵌套:列表中可以包含其他列表(嵌套列表)。列表是存储一组有序元素的最常用结构——可变意味着可以动态地添加、删除或修改其中的元素。3.1.2列表的常用操作(一):创建、访问与修改6创建与访问#创建空列表students=[]#初始化列表(元素为元组)students=[("S001","张三",18),("S002","李四",20)]#索引访问:从0开始first_name=students[0][1]print(first_name)#输出:张三修改元素#通过索引直接修改元素students[0]=("S001","张三",20)print(students[0])#输出:('S001','张三',20)◆索引从0开始,支持负数索引:-1表示最后一个元素;◆嵌套访问:students[0][1]表示第1个学生的第2个字段(姓名)。负数索引#负数索引last=students[-1]#最后一个元素想一想:为什么修改元素用『直接赋值』即可,而字符串却不支持?——因为列表是可变序列,字符串是不可变序列。3.1.2列表的常用操作(二):添加元素7append()与insert()#append():在列表末尾添加一个元素students.append(("S003","王五",19))#insert():在指定位置插入元素students.insert(1,("S004","赵六",21))extend()#extend():将另一个列表的所有元素#依次添加到当前列表末尾new_students=[("S005","孙七",22),("S006","周八",23)]students.extend(new_students)print(students)#实现拓展列表的效果◆append():一次添加一个元素到末尾;insert():在指定索引位置插入;◆extend():把另一个列表的每个元素依次加入末尾。重要区别:extend()将new_students的每个元素分别添加;若使用append()添加new_students,则会将整个列表作为一个元素(嵌套列表)添加进去!3.1.2列表的常用操作(三):删除元素8四种删除方法students.remove(("S002","李四",20))#删除第一个匹配的元素students.pop(0)#删除指定索引(默认最后)delstudents[1]#del语句删除指定索引元素students.clear()#清空列表(列表仍存在)delstudents#删除整个列表(不存在了)方法说明remove()删除第一个匹配的元素pop()删除指定索引处元素,默认最后一个del语句删除指定索引元素或整个列表clear()清空列表中的所有元素◆remove()按值删除且只删除第一个匹配项,元素不存在时报ValueError;◆del语句功能最强大:可删除单个元素,也可删除整个列表变量。注意:clear()后列表为空列表[],仍可继续使用;delstudents后列表变量不存在,再访问会报NameError。3.1.2列表的常用操作(四):切片与排序9切片与长度numbers=[0,1,2,3,4,5,6,7,8,9]print(numbers[2:5])#[2,3,4]print(numbers[::2])#[0,2,4,6,8]print(numbers[::-1])#反转列表n=len(numbers)#获取列表长度print(n)#输出:10排序numbers=[3,1,4,1,5,9,2]numbers.sort()#原地升序排序numbers.reverse()#原地反转new_list=sorted(numbers,reverse=True)#sorted():返回新列表,原列表不变print(new_list)#输出:[9,5,4,3,2,1,1]◆切片语法[start:stop:step]:start包含、stop不包含、step默认为1;◆sort()原地排序(修改原列表);sorted()返回新列表,原列表不变。记一记:numbers[::-1]是反转列表的经典写法;len()统计元素个数。3.1.2列表的常用操作(五):复制10浅拷贝与深拷贝importcopyfruits=["apple","banana",["cherry","grape"]]shallow_copy=fruits.copy()#浅拷贝:切片或copy()方法deep_copy=copy.deepcopy(fruits)#深拷贝:适用于嵌套列表◆浅拷贝:使用切片[:]或copy()方法,只复制外层列表;◆嵌套的子列表仍然共享同一内存,修改子列表会相互影响;◆深拷贝:使用copy.deepcopy()方法,完全独立复制所有层级;◆修改深拷贝不会影响原列表,适用于嵌套列表的完整备份。选型建议:无嵌套结构用浅拷贝即可;含嵌套列表且需独立修改时,必须用深拷贝。3.1.3列表的常用方法11方法描述append()在列表末尾添加元素insert()在指定位置插入元素extend()将另一个列表的元素添加到当前列表remove()删除第一个匹配的元素pop()删除指定索引处的元素clear()清空列表index()返回指定元素的索引count()返回指定元素出现的次数sort()对列表进行排序reverse()反转列表中的元素顺序copy()返回列表的浅拷贝这些方法都是列表对象的内置方法,通过『列表名.方法名()』调用。3.1.4列表推导式12语法[表达式for变量in可迭代对象if条件]示例#生成1到10的平方列表squares=[x**2forxinrange(1,11)]print(squares)#输出:[1,4,9,16,25,36,49,64,81,100]#过滤偶数evens=[xforxinrange(10)ifx%2==0]print(evens)#输出:[0,2,4,6,8]动一动:使用列表推导式,一行代码生成1到10每个数的平方列表,与先用for循环创建空列表再逐个append的方法对比,哪种更简洁?这体现了Python的什么设计哲学?3.1.5列表的嵌套13嵌套列表示例matrix=[[1,2,3],[4,5,6],[7,8,9]]print(matrix[1][2])#输出:6◆列表中可以包含其他列表,形成嵌套列表(多维列表);◆通过matrix[行索引][列索引]逐层访问元素;◆matrix[1][2]:第2行(索引1)第3列(索引2)的元素6。嵌套列表常用于存储矩阵、表格数据——后续人工智能领域的张量(Tensor)也基于类似思想。3.1.6元组的定义与特性14定义:由圆括号()括起来的有序、不可变序列元组的创建student=("S001","张三",18)#三元素元组single=(42,)#单个元素元组(注意逗号)empty_tuple=()#空元组◆有序性:元素按插入顺序排列,可通过索引访问;◆不可变性:创建后无法修改元素(但可重新赋值整个元组);◆轻量级:内存占用比列表小,适合存储固定数据。易错点:单元素元组必须加逗号(42,),否则(42)只是一个被括号包裹的整数!3.1.7元组的常用操作15访问与遍历#索引访问print(student[1])#输出:张三#遍历元组forinfoinstudent:print(info)◆元组不可修改单个元素,student[1]="李四"会报TypeError;◆可对整个元组重新赋值:student=("S002","李四",19);◆遍历方式与列表完全一致。为什么学生信息用元组存储?——单个学生的学号、姓名、年龄是固定组合,元组的不可变性恰好保证数据不被误改。3.1.8元组与列表的区别16特性列表(List)元组(Tuple)可变性可变(可增删改)不可变内存占用较大较小(轻量级)适用场景动态数据(如学生信息增删)固定数据(如配置参数)想一想:存储固定不变的学生基本信息("张三","2025001","人工智能学院"),应选择元组——基于不可变性保证数据安全,内存占用更小、访问更快;这一选择对程序的数据安全和性能都有潜在影响。◆系统设计中:列表存『集合数据』(全部学生),元组存『单条记录』(一个学生);◆这正是任务3-1的数据结构选型:列表套元组。任务3-1实现:初始化、菜单与添加(一)17步骤1初始化数据结构students=[],每个学生以元组(学号,姓名,年龄)存储↓步骤2主菜单循环whileTrue显示功能菜单,break退出系统↓步骤3添加学生信息验证学号格式S+3位数字、年龄为非负整数↓步骤4查询学生信息for遍历列表按学号匹配,break提前终止步骤1-2代码students=[]#列表存元组(学号,姓名,年龄)whileTrue:print("===学生信息管理系统===")print("1.添加2.查询3.修改4.删除5.显示6.退出")choice=input("请选择操作(1-6):").strip()ifchoice=="6":print("系统退出,感谢使用!")break#退出主循环步骤3验证核心#步骤3:学号验证(S+3位数字)ifnot(sid.startswith("S")andlen(sid)==4andsid[1:].isdigit()):continue#跳过本次,重新输入#年龄验证:isdigit()确保非负整数students.append((sid,name,age))关键点:通过startswith()、len()、isdigit()确保学号格式正确;嵌套循环直到输入合法年龄。任务3-1实现:查询、修改与删除(二)18步骤5修改学生信息通过列表索引重新赋值元组,留空则不修改↓步骤6删除学生信息remove()按值删除,for...else提示未找到↓步骤7显示所有学生遍历列表,制表符\t对齐格式化输出步骤4-6核心代码#步骤4:查询(for+break提前终止)forstudentinstudents:ifstudent[0]==target_id:print(f"学号:{student[0]},姓名:{student[1]}")breakelse:#循环未被break退出(未找到)print("未找到该学号对应的学生信息!")#步骤5:修改(索引重新赋值元组)students[i]=(target_id,final_name,final_age)#步骤6:删除(按值删除匹配元组)students.remove(student)关键点:①for...else结构——循环未被break退出时执行else(未找到目标);②修改元组需整体重新赋值;③空列表判断用notstudents。Python编程与人工智能基础任务3-2学生成绩管理主讲教师:施莉莉193.2.1字典的定义与特点20定义:花括号{}表示的键值对(Key-Value)集合字典的创建student={"name":"张三","age":20}scores={"S001":[85,90]}#值可以是列表◆键唯一性:键必须是不可变类型(整数、字符串、元组),且不可重复;◆值的灵活性:值可以是任意类型(包括列表、字典等);◆无序性:3.7+版本按插入顺序保持,但不支持索引(dict[0]会报错);◆高效查找:通过键直接访问值,时间复杂度为O(1)(基于哈希表)。素养小贴士:字典的『键-值』映射是高效组织信息的典范。在国家大数据战略下,理解并善用此类数据结构,是培养数据治理思维、实现数据资源高效配置的第一步。3.2.2字典的基本操作(一):创建与访问21三种创建方式#方式1:直接定义student={"name":"张三","age":20,"scores":[85,90]}#方式2:dict()构造函数student=dict(name="张三",age=20)#方式3:空字典empty_dict={}访问元素print(student["name"])#输出:张三#安全访问:get()方法#键不存在时返回默认值,避免报错print(student.get("city","未知"))#输出:未知注意:直接student["city"]访问不存在的键会抛出KeyError;推荐用get()安全访问,键不存在时返回默认值。◆通过键访问值,如student["name"];◆get(key,default):既安全又简洁,是查询未知键的首选。3.2.2字典的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年温泉县网格员招聘考试备考试题及答案解析
- 2026楚雄州中医医院青年就业见习人员招募9人笔试参考题库及答案详解
- 2026哈尔滨银行成都分行社会招聘笔试参考题库及答案详解
- 2026年织金县网格员招聘笔试参考题库及答案解析
- 2026福建龙岩市中心血站公开招聘台湾人才笔试参考题库及答案详解
- 2027徽商银行总行管培生(徽星计划)校园招聘考试备考试题及答案详解
- 中国能建浙江院2027年校园招聘笔试模拟试题及答案详解
- 2026中国医学科学院阜外医院凤玮课题组CoPI岗位招聘1人笔试备考题库及答案详解
- 2026河北省经作所药用中心招聘2名笔试备考题库及答案详解
- 2026河北邢台南宫市公益性岗位招聘24人笔试参考题库及答案详解
- 2025年七年级春季学期音乐教研工作计划
- 2025至2030年中国家用美容电器具行业发展监测及投资前景预测报告
- 2025卫生职称疾病控制正高高级职称历年考试试题及答案
- (新教材)2025年秋期人教版一年级上册数学全册核心素养教案(教学反思无内容+二次备课版)
- 红火蚁咬伤的诊断与治疗
- 汉服妆造培训
- 地产渠道市场培训课件
- 供暖安装管理制度
- T/CECS 10214-2022钢面镁质复合风管
- 基于室内分布5G多频段定向天线系统的设计
- 餐饮美学基础 课件全套 模块1-4 餐饮美学概论 -餐厅民俗美学
评论
0/150
提交评论