大数据分析导论 课件 第5章-Python编程基础_第1页
大数据分析导论 课件 第5章-Python编程基础_第2页
大数据分析导论 课件 第5章-Python编程基础_第3页
大数据分析导论 课件 第5章-Python编程基础_第4页
大数据分析导论 课件 第5章-Python编程基础_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

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

文档简介

第5章Python编程基础5.1Python快速入门5.2变量与数据类型5.3Python程序的输入输出5.4Python程序的控制结构5.5函数和模块5.6综合案例:基于Pandas的数学成绩分析15.1Python快速入门本节概述Python语言的基本特点与发展历程,并介绍如何搭建编程环境、运行Python程序及理解其基本语法结构。5.1.1Python语言的特点和发展Python简介Python(得名于英国喜剧团体"MontyPython",国际音标标注为/ˈpaɪθən/,常见中文音译为"派森"),是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多·范罗苏姆(GuidovanRossum)于1989年发明,第一个公开发行版于1991年发布。经过三十余年的发展,Python凭借简洁的语法、丰富的生态和强大的社区支持,已成为全球最受欢迎的编程语言之一,在数据分析、人工智能、Web开发等领域占据主导地位。5.1Python快速入门大数据分析导论·第5章·2/113Python语言的显著特点(1)语法简洁清晰Python语言采用极简主义设计哲学,通过缩进机制定义代码块,使得程序结构直观易读,大幅降低了初学者的学习门槛。(2)开发效率卓越相较于C、Java等语言,Python语言能够用更少的代码量实现相同的功能,显著提升了程序开发、测试和维护的效率。(3)开源与跨平台特性Python也是一种免费开源的编程语言,任何人可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改进等。由于它的开源本质,Python已经被移植在许多平台上,所有Python程序无需修改就可以在各类主流操作系统上运行。(4)生态体系丰富围绕Python形成了涵盖数据科学、机器学习、Web开发等领域的完善工具链,特别是NumPy、Pandas、TensorFlow等库的加持,使其成为数据科学与AI开发的首选语言。3Python的发展与地位国际地位根据KDnuggets网站调查显示,Python自2017年超越R语言成为数据科学与机器学习领域使用最广泛的语言后,其领先地位始终保持至今。根据TIOBE编程语言排行榜数据显示,Python自2021年首次登顶后已连续多年保持榜首地位,这充分体现了其在全球开发者社区中的广泛影响力和受欢迎程度。TIOBE指数作为衡量编程语言流行度的重要指标,其排名结果客观反映了Python在工业界和学术界的普及程度。在我国的推广自2018年3月起,"Python语言程序设计"被纳入全国计算机等级考试二级科目。北京、山东、浙江等多个省市已将Python编程纳入中小学信息技术课程体系及高考考核范围,这充分体现了Python语言在数字时代人才培养中的重要地位。45.1.2搭建编程环境选择合适的开发环境Python的开发环境种类丰富:轻量便捷原生IDLE(IntegratedDevelopmentandLearningEnvironment,集成开发和学习环境)功能强大专业集成开发环境(如PyCharm、Anaconda)开箱即用云计算平台(如百度AIStudio)本书选用Python原生IDLE作为学习工具。5Python原生IDLE的特点(1)轻量便捷IDLE随Python安装包自动配备,无需额外下载或配置,安装完成后即可直接使用,启动速度快,系统资源占用极少。(2)交互式学习IDLE提供交互式命令行窗口(Shell),用户输入一行代码即可立即看到运行结果,非常适合初学者逐步测试代码片段、验证语法规则,有助于快速建立编程直觉。(3)程序编辑IDLE内置代码编辑窗口,可以编写、保存和运行完整的Python程序,支持语法高亮和自动缩进,方便代码的阅读与修改。(4)跨平台一致IDLE在Windows、macOS和Linux系统上的界面与操作方式基本一致,学习经验可以无缝迁移。6在Windows系统中安装Python安装方式在Windows系统中,安装Python常用的方式主要有两种:方式一从Python官方网站下载安装包进行安装(操作直观、适合初学者)方式二通过PythonInstallManager进行安装(便于管理不同版本)本书采用下载安装包的方式进行说明,安装完成后即可同时获得Python解释器和原生开发环境IDLE。7安装步骤(1):访问官网下载安装包打开Python官方网站(/),将鼠标指向页面中的Downloads菜单,网站会自动显示适用于Windows系统的最新版本安装包,单击Python3.14.3按钮(可能会随Python版本更新变化)即可开始下载。图5-1Python官方网站大数据分析导论·第5章·8/1138安装步骤(2):运行安装程序安装包下载完成后,双击运行安装程序,弹出Python的安装界面。注意事项:

务必选中AddPythontoPATH复选框,这样可自动将Python路径配置到系统的环境变量中。建议选中Useadminprivilegeswheninstallingpy.exe,以管理员权限进行相关安装设置。可以通过选择CustomizeInstallation选项,在弹出的设置界面中对默认的Python安装路径进行更改,建议修改为C:\Python\Python314,方便后期的使用。图5-2将Python路径配置到系统环境变量中9安装步骤(2)续:配置安装路径可以在文本框中直接输入安装路径,或者单击Browse按钮选择相应的安装路径。图5-3配置Python安装路径10安装步骤(3):验证安装结果安装完成后,可以在Windows命令窗口中检查Python安装是否成功:在"开始"菜单的"搜索"栏里面输入cmd.exe,打开Windows命令窗口输入Python后,按Enter键,启动Python交互式命令执行终端出现如图所示结果,表示Python安装成功说明:命令执行终端显示了系统安装的Python版本,最后的符号>>>是一个提示符,表示可以输入Python命令。在交互式命令窗口输入代码print("helloworld!")后回车,系统将执行Python语句并输出结果。可以通过exit()函数退出Python环境。图5-4启动Python交互式命令执行终端115.1.3运行Python程序两种运行方式Python安装完成后,可以通过IDLE进入Python原生开发环境。使用原生IDLE运行Python程序通常有两种方式:方式一在交互式命令窗口中逐行输入并立即执行代码方式二将代码编写为.py文件后统一运行12运行方式(1):在交互式命令窗口运行Python程序在Windows"开始"菜单的"搜索"栏里输入IDLE,找到并打开IDLE程序。图5-5找到并打开IDLE程序启动后,系统会进入IDLE的交互式命令窗口,用户可以在其中直接输入并执行简单的Python语句。学习一门编程语言时,第一个程序通常是在屏幕上输出一条消息"Helloworld!"。在Python中,可以直接在交互式窗口中使用print()函数输出这条信息。这种方式适合输入和测试简单语句,能够立即看到运行结果,便于初学者理解程序的执行过程。图5-6Python交互式命令执行窗口13运行方式(2):编写并运行.py程序文件当需要编写和执行多行代码时,可以在IDLE中创建、编辑并运行Python源程序文件。操作步骤:第1步选择IDLE窗口中的File→NewFile命令,新建一个空白的编辑窗口。第2步选择File→Save命令,将文件保存为score_v1.py文件,选择文件所在的位置为C:\Python文件夹。第3步在score_v1.py文件中输入相应代码并保存。第4步选择Run→RunModule命令,或者按F5键,即可通过PythonIDLE运行py文件。14运行方式(2)续:代码示例图5-7输入相应代码并保存图5-8通过PythonIDLE运行py文件155.1.4Python程序的语法结构两个核心部分:代码缩进与注释Python程序语法的格式框架主要包括两个部分:代码缩进、注释。在编写多行Python代码来求解问题的时候,为了方便程序能够被轻松地读懂,一般要为程序添加注释。代码缩进Python通过缩进来定义代码块结构,缩进一般为4个空格,是Python语法的核心规则之一。注释注释用于解释代码的功能,不会被Python解释器执行,有助于提高代码的可读性与可维护性。16注释的两种形式形式一:单行注释(#)用井号(#)来注释一行,#后面的内容不管写什么都不会执行。#这是一行Python注释print("HelloPythonworld!")形式二:多行注释(''')用两个三引号(''')用来注释多行,两个三引号(''')之间的部分为注释内容,将不会被执行。'''这是多行注释,用三个单引号这是多行注释,用三个单引号'''print("HelloPythonworld!")注意:注释内容要尽量以简洁清晰的语言把代码的功能讲清楚,方便今后的代码阅读和修改等。17代码缩进规则Python程序运行时,根据缩进来解读代码,不考虑空行,所以空行一般用来增加程序的可读性,对程序的运行没有影响。缩进一般是4个空格。【注意】并不是所有的代码都可以通过缩进来包含其他的代码,否则会出现缩进错误(IndentationError)。例如下面代码运行后会报错:print("Lifeisshort,IusePython!")print("Metoo!")错误信息如下:File"C:/Python/untitled1.py",line8print("Metoo!")^IndentationError:unexpectedindent此处IndentationError:unexpectedindent错误的意思是,Python解释器在应该没有缩进的地方发现了一个多余的缩进。18Python之禅Python的设计哲学集中体现为"Python之禅"(TheZenofPython),由资深开发者蒂姆·彼得斯(TimPeters)总结。在Python交互式命令终端输入importthis命令,即可查看这组指导Python语言设计的格言:>>>importthisTheZenofPython,byTimPetersBeautifulisbetterthanugly.Explicitisbetterthanimplicit.Simpleisbetterthancomplex.Complexisbetterthancomplicated.Flatisbetterthannested.Sparseisbetterthandense.Readabilitycounts.Specialcasesaren'tspecialenoughtobreaktherules.Althoughpracticalitybeatspurity.Errorsshouldneverpasssilently.19Unlessexplicitlysilenced.Inthefaceofambiguity,refusethetemptationtoguess.Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch.Nowisbetterthannever.Althoughneverisoftenbetterthan*right*now.Iftheimplementationishardtoexplain,it'sabadidea.Iftheimplementationiseasytoexplain,itmaybeagoodidea.Namespacesareonehonkinggreatidea--let'sdomoreofthose!核心要义:优美优于丑陋,明了优于晦涩,简洁优于复杂;代码的可读性至关重要,应当用最直接的方式完成任务,而不应过度追求技巧。正是在这种设计哲学的指引下,Python逐渐发展为一门简明友好、易于上手且功能强大的语言。205.2变量与数据类型Python程序的核心任务是处理数据。变量(Variable)是程序中用于标识和引用数据的基本单元。Python是一种面向对象的语言,程序中的任何数据都是对象(Object),每个对象都有其对应的数据类型(DataType)。理解数据类型与变量的工作方式,是掌握Python程序设计的重要基础。变量(Variable)程序中用于标识和引用数据的基本单元对象(Object)Python中任何数据都是对象,每个对象都有其对应的数据类型数据类型(DataType)决定了数据的表示方式以及可以对其执行的操作215.2.1变量的使用创建变量在Python中,创建变量只需通过赋值语句即可:变量名=变量值在编程语言中,=与数学意义上的"相等"的含义不同,表示赋值运算符,即将右侧的值存放到左侧的变量中。Python执行赋值语句的过程:当执行如下赋值语句时,Python的实际过程为:首先在内存中创建一个值为85.0的浮点数对象;然后将变量名score像标签一样"贴"在这个对象上;通过这个标签,程序就能在内存中找到并操作对应的数据。score=85.022变量的两个重要特性(1)动态类型变量本身没有类型,类型属于数据对象。因此Python无需像C语言那样在使用变量前提前声明其类型,解释器会在程序运行时根据变量所引用的对象自动判断,这种特性称为动态类型(DynamicTyping)。(2)可修改性在程序中可以随时修改变量的值,而变量只能保存最后修改的值。当对变量重新赋值时,变量名不再指向原来的对象,而是转而引用新的对象。score=85.0#score贴在浮点数对象上score="优秀"#score改贴在字符串对象上print(score)#输出优秀23变量命名规则规则(1)只能由字母、数字和下划线组成,且不能以数字开头。例如name、name_1、_name_1等都是合法的变量名,而1name、1_name则不合法。规则(2)区分大小写,且不能包含空格,例如Score与score是两个不同的变量。规则(3)不能使用Python的保留字和内置函数名作为变量名,例如if、True、False、print等。建议:变量名应做到"见名知意"。例如用score表示成绩、name表示姓名,而非用a、b等无意义的字母,这有助于提高代码的可读性与可维护性。24常见错误:命名错误(NameError)在使用变量的过程中,最容易出现的错误是命名错误(NameError)。例如,变量名定义为score,却在使用时误写为Score,由于Python区分大小写,解释器无法找到名为Score的变量,便会报错。>>>score=95>>>print(Score)Traceback(mostrecentcalllast):File"<pyshell#2>",line1,in<module>print(Score)NameError:name'Score'isnotdefined遇到此类错误时,只需仔细对照变量名的定义与使用是否一致,修正拼写后程序即可正常运行。255.2.2数据与数据类型Python常用数据类型Python将程序中处理的所有数据统称为对象,每个对象都有其对应的数据类型。数据类型决定了数据的表示方式以及可以对其执行的操作。表5-1Python常用数据类型类型名称关键字示例说明整数int85、-5、0不含小数部分的数字浮点数float85.5、3.14含小数部分的数字布尔型boolTrue、False表示逻辑真或假字符串str"张三"、"良好"用引号括起来的字符序列列表list[85,92,76]有序、可修改的数据集合元组tuple(85,92,76)有序、不可修改的数据集合字典dict{"name":"张三"}键值对形式的数据集合其中,整数、浮点数和布尔型用于表示数值类数据;字符串用于表示文本类数据;列表、元组和字典则用于组织和管理多个数据,适合处理批量信息。26查看数据类型与类型转换查看类型:type()函数一般通过type()函数查看数据或变量的类型:>>>name="张三">>>score=85.0>>>gpa=3.0>>>is_passed=True>>>print(type(name))<class'str'>>>>print(type(score))<class'float'>>>>print(type(gpa))<class'float'>>>>print(type(is_passed))<class'bool'>27类型转换在实际程序中,经常需要在不同数据类型之间进行转换。例如,input()函数获取的用户输入默认为字符串类型,若要进行数值计算,必须先将其转换为数字类型:score=float(input("请输入考试成绩:"))#将字符串转换为浮点数表5-2常用数据类型转换函数函数功能示例int(x)转换为整数int("85")→85float(x)转换为浮点数float("85")→85.0str(x)转换为字符串str(85)→"85"bool(x)转换为布尔型bool(0)→False285.2.3字符串及其操作字符串基本概念字符串(str)是由若干字符组成的序列,是程序中最常用的数据类型之一。Python中的字符串需用单引号或双引号括起来,两种形式完全等价:name="张三"grade='良好'引号嵌套规则当字符串内容本身包含引号时,需要交替使用两种引号,即双引号字符串内嵌套单引号,或单引号字符串内嵌套双引号。若使用相同类型的引号嵌套,则会产生语法错误:>>>print("该同学评定等级为'良好'。")#正确:双引号内嵌套单引号该同学评定等级为'良好'。>>>print('该同学评定等级为"良好"。')#正确:单引号内嵌套双引号该同学评定等级为"良好"。>>>print("该同学评定等级为"良好"。")#错误:双引号内嵌套双引号SyntaxError:invalidsyntax29多行字符串与转义字符多行字符串(三引号)若需要定义多行字符串,可以使用三引号('''或"""),三引号内部可以自由使用单引号与双引号:>>>report="""学生姓名:张三考试成绩:85.0评定等级:良好""">>>print(report)学生姓名:张三考试成绩:85.0评定等级:良好常用转义字符表5-3常用转义字符转义字符含义示例\n换行"姓名\n成绩"\t制表符(Tab)"姓名\t成绩"\\反斜杠本身"C:\\Users"\'单引号'等级\'良好\''\"双引号"等级\"良好\""30字符串操作:获取长度与拼接1.获取字符串长度使用内置函数len()函数可以获取字符串的长度,即字符串中字符的个数。无论是英文字符还是中文字符,每个字符的长度均计为1。>>>len("良好")2>>>len("Hello!")62.字符串拼接使用加号(+)可以将多个字符串拼接为一个新的字符串:>>>name="张三">>>grade="良好">>>message="同学"+name+"的评定等级为"+grade+"。">>>print(message)同学张三的评定等级为良好。31字符串操作:大小写转换3.大小写转换Python为字符串提供了一系列方法(Method)用于处理文本格式。方法是属于对象的函数,通过点号(.)调用:字符串对象.方法名()常用的大小写转换方法:>>>name="zhangsan">>>print(name.title())#每个单词首字母大写ZhangSan>>>print(name.upper())#全部大写ZHANGSAN>>>print(name.lower())#全部小写zhangsan32title()将字符串里面每一个英文字符的首字母大写upper()将字符串中所有的英文字母变成大写形式lower()将字符串中所有的英文字母变成小写形式因为字符串'the'和'The'是不相同的字符串,所以如果要计算一篇英文文章中某些单词出现的频率时,首先要通过title()、upper()或者lower()方法把字符串中所有单词的不同形式进行统一后,才能准确计算该单词出现的次数。33字符串操作:索引4.字符串索引字符在字符串中的编号称为索引(Index)。Python中的索引有两种方式:正向索引从左向右,从0开始依次递增,长度为L的字符串最后一个字符的正向索引是L-1反向索引从右向左,以-1为起点依次递减,最右侧索引值是-1表5-4字符串的两种索引字符hello,Sam!正向索引0123456789反向索引-10-9-8-7-6-5-4-3-2-134字符串操作:单个索引与切片(1)单个索引访问字符串中指定位置的字符,格式为:字符串名[索引值]>>>message="Hello,Sam!">>>message[0]'H'>>>message[-1]'!'35(2)范围索引(切片)范围索引通过两个索引值截取字符串中的一段子字符串,也称为切片(Slice),格式为:字符串名[start:end]其中,start和end均为整数,切片返回从索引start开始直到索引end之前(不含end)的子字符串。省略start表示从头开始,省略end表示直到末尾。>>>message[7:10]'Sam'>>>message[0:1]'H'>>>message[-3:-1]'am'>>>message[7:]'Sam!'365.2.4数字及其操作整数与浮点数Python中的数字主要分为两种类型:整数(int)和浮点数(float)。Python支持四种进制的整数表示:表5-5Python支持四种进制的整数表示进制前缀可用数字/字母示例十进制无0~995二进制0b或0B0、10b1011111八进制0o或0O0~70o137十六进制0x或0X0~9、a~f0x5f37以上四种写法在Python中表示的都是同一个整数95,可以在交互式终端中验证:>>>0b101111195>>>0o13795>>>0x5f95【注意】不同进制的整数在Python内部均以统一的方式存储,进制的选择只影响代码中的书写形式,不影响数值本身。38数字操作:浮点数与数值运算浮点数浮点数即数学中的小数,对于数值不大的浮点数,可直接采用十进制写法,例如1.23、3.14;对于数值极大或极小的浮点数,通常采用科学记数法表示,以字母e(或E)代替"×10n",例如,1.23\times10^9就写成1.23e9,或者12.3e8,0.000012写成1.2e-5,等等。数值运算操作表5-6数值运算的操作表操作操作含义示例结果x+yx与y之和85.0+5.090.0x-yx与y之差85.0-5.080.0x*yx与y之积85.0*2170.0x/yx与y之商(结果为浮点数)171.0/285.5x//y不大于x与y之商的整数部分(向下取整)171//285x%yx与y之商的余数171%21x**y或pow(x,y)x的y次幂2**3或pow(2,3)8abs(x)x的绝对值abs(-5)539浮点数精度与round()函数浮点数运算精度问题在进行浮点数运算时,有时会出现如下情况:>>>85.1+0.185.199999999999999>>>85.1+0.285.30000000000001这并非Python的缺陷,而是由计算机内部采用二进制表示数字的方式决定的。大多数十进制小数(例如0.1、0.2)无法用二进制精确表示,因此在运算后会产生极小的误差。使用round()函数控制精度若需要控制输出的小数位数,可以使用round()函数进行四舍五入:>>>avg=2805.0/35#计算平均分>>>avg80.14285714285714>>>round(avg,2)#保留两位小数80.14>>>round(avg,1)#保留一位小数80.1【说明】在对浮点数精度有严格要求的场合(例如财务计算),应使用Python标准库中的decimal模块,而非直接使用float类型。405.2.5逻辑值及其操作逻辑值(bool)逻辑值(bool)只有两个取值:True(真)和False(假),是条件判断的基础。一般通过比较运算和逻辑运算来获得。>>>score=85.0>>>score>=60#判断是否及格True>>>score>=90#判断是否优秀False>>>score>=0andscore<=100#判断成绩是否在有效范围内True41Python常用比较运算符表5-7Python常用比较运算符运算符含义示例结果==等于score==90False!=不等于score!=90True>大于score>60True<小于score<60False>=大于等于score>=85True<=小于等于score<=85True【注意】==是比较运算符,表示"是否相等";=是赋值运算符,表示"将右侧对象赋给左侧变量"。两者含义完全不同,初学者需注意区分。42逻辑运算符当判断条件不止一个时,需要使用逻辑运算符将多个条件组合起来。Python的逻辑运算符包括三个:and、or和not,即与运算、或运算和非运算。AandB(与运算)当A为真,并且B也为真的时候,逻辑值为真(True);当A或B为假时,逻辑值为假(False)。AorB(或运算)当A为真,或者B为真的时候,逻辑值为真(True);当A和B均为假时,逻辑值为假(False)。notA(非运算)当A为假时,逻辑值为真(True),A为真时逻辑值为假(False)。以成绩评定为例:>>>score=85.0>>>gpa=3.0>>>score>=60andgpa>=2.0#成绩及格且绩点达标True>>>score>=90orgpa>=3.7#成绩优秀或绩点优秀False>>>notscore>=90#成绩不是优秀True435.2.6列表及其操作列表(List)简介列表(List)是Python中最常用的数据类型之一,用于将一组数据按顺序集合在一起存放。列表中的元素可以是任意类型,且各元素的类型无需一致,列表的元素也可以是另一个列表。在Python中,列表用方括号[]表示,元素之间用逗号分隔:>>>['语文','数学','英语','物理','化学']#字符串列表['语文','数学','英语','物理','化学']>>>[88,95,72,81,90]#数字列表[88,95,72,81,90]>>>['张三',18,'良好',88.5,[3,4,6]]#混合类型列表['张三',18,'良好',88.5,[3,4,6]]对于字符串数据,可以使用split()方法将其按指定分隔符拆分为一个字符串列表:>>>"张三李四王五赵六".split()['张三','李四','王五','赵六']44列表的实际应用示例在数据分析中,实际数据通常以列表的形式存储:#记录某班10名学生的语文成绩chinese_scores=[88,95,72,81,90,76,84,93,68,87]#记录某门课程全体学生的评定等级grades=['优秀','良好','良好','及格','优秀','良好','及格','优秀']数值列表存储学生成绩、统计数据等数值型信息,便于后续进行求和、排序、统计分析等操作。字符串列表存储姓名、等级、类别等文本型信息,便于批量处理和遍历输出。45访问列表元素:索引(1)索引列表中的每个元素都有一个位置编号,称为索引,也称下标。Python支持两种索引方式:正向索引从0开始,自左向右依次递增反向索引从-1开始,自右向左依次递减46访问单个列表元素的语法格式为:列表名[索引值]>>>chinese_scores=[88,95,72,81,90,76,84,93,68,87]>>>chinese_scores[0]#第1位学生的成绩88>>>chinese_scores[4]#第5位学生的成绩90>>>chinese_scores[-1]#最后一位学生的成绩87通过索引还可以修改列表中的元素:>>>chinese_scores[0]=91#修改第1位学生的成绩>>>chinese_scores[91,95,72,81,90,76,84,93,68,87]47访问列表元素:切片(2)切片切片用于访问列表中的一段连续元素,语法格式为:列表名[start:end:step]通过列表切片得到一个从索引start开始,到索引end之前(不含end)的子列表;step为步长,表示每隔几个元素取一个,可省略(默认为1)。start和end也可省略,省略start表示从头开始,省略end表示直到末尾。>>>chinese_scores[0:3]#取前3位学生的成绩[91,95,72]>>>chinese_scores[:3]#省略start,效果同上[91,95,72]>>>chinese_scores[3:]#取第4位及之后所有学生的成绩[81,90,76,84,93,68,87]>>>chinese_scores[::3]#从头到尾,每隔3位取1个(步长为3)[91,81,84,87]48列表的操作方法2.列表的操作方法列表提供了一系列内置方法,用于添加、删除、排序和反转元素:表5-8列表的常用操作方法操作方法描述ls.append(x)在列表ls尾部添加元素xls.insert(pos,x)在列表ls下标为pos的位置插入元素xls.remove(x)删除列表ls中第一个值为x的元素ls.sort()对列表ls所有元素进行升序排序ls.sort(reverse=True)对列表ls所有元素进行降序排序ls.reverse()对列表ls所有元素进行反转49列表操作:添加与删除元素(1)添加与删除元素>>>grades=['优秀','良好','及格']>>>grades.append('不及格')#在列表尾部添加元素>>>grades['优秀','良好','及格','不及格']>>>grades.insert(1,'良好')#在索引1处插入元素>>>grades['优秀','良好','良好','及格','不及格']>>>grades.remove('不及格')#删除指定元素>>>grades['优秀','良好','良好','及格']【注意】remove()方法仅删除列表中第一次出现的匹配元素。若列表中存在多个相同的值,后续出现的相同元素将保留;若删除的值在列表中不存在,程序将报错。50列表操作:排序与反转(2)排序与反转>>>chinese_scores=[88,95,72,81,90]>>>chinese_scores.sort()#升序排序>>>chinese_scores[72,81,88,90,95]>>>chinese_scores.sort(reverse=True)#降序排序>>>chinese_scores[95,90,88,81,72]>>>chinese_scores.reverse()#反转列表>>>chinese_scores[72,81,88,90,95]51操作列表的函数3.操作列表的函数与直接修改原列表的方法不同,这些内置函数通常返回新的计算结果,原列表内容保持不变。(1)len()与sorted()函数>>>chinese_scores=[88,95,72,81,90]>>>len(chinese_scores)5>>>sorted(chinese_scores)#返回升序排序后的新列表,原列表不变[72,81,88,90,95]>>>chinese_scores#原列表保持不变[88,95,72,81,90]>>>chinese_scores.sort()#原列表被修改>>>chinese_scores[72,81,88,90,95](2)min()、max()、sum()函数这三个函数用于对数值型列表进行统计计算:>>>chinese_scores=[88,95,72,81,90,76,84,93,68,87]>>>max(chinese_scores)#最高分95>>>min(chinese_scores)#最低分68>>>sum(chinese_scores)#总分83452元组简介元组(tuple)Python中还提供一种与列表相似的序列类型——元组(tuple)。元组同样用于存储一组有序的数据,元素通过索引访问,也支持切片操作。与列表使用方括号[]不同,元组使用圆括号()定义,元素之间用逗号分隔。例如:student=('张三',88,'良好')便创建了一个包含三个元素的元组。元组与列表的本质区别元组一旦创建,其内部元素就不可修改——既不能增加、删除元素,也无法更改已有元素的值。这一特性使元组特别适用于存储那些在程序运行过程中不应被改变的数据集合,如学生的姓名和学号、地理坐标、数据库连接参数等。元组的优势也正是由于元组的不可变性,它在安全性和处理效率上优于列表。535.2.7字典及其操作字典(dict)简介字典(dict)是由一系列键值对组合而成的数据结构,用花括号({})表示。字典中的每个键值对通过冒号:关联,键(Key)通常为属性名称,值(Value)为对应的数据。>>>student={'name':'张三','score':88,'grade':'良好'}其中,'name'、'score'、'grade'为键,'张三'、88、'良好'为对应的值。访问字典中的值,语法格式为:字典名[键]>>>student['name']'张三'>>>student['score']88>>>student['grade']'良好'键值对是组织和查找数据的重要方式——通过"键"快速定位对应的"值",这一过程称为映射。54字典操作:添加、修改和删除1.添加、修改和删除字典元素添加键值对:>>>student['class']='计算机1班'#添加班级信息>>>student['rank']=3#添加班级排名>>>student{'name':'张三','score':88,'grade':'良好','class':'计算机1班','rank':3}也可以先创建一个空字典,再逐步添加键值对:student0={}修改键对应的值:>>>student['score']=91#修改成绩>>>student['grade']='优秀'#修改等级>>>student{'name':'张三','score':91,'grade':'优秀','class':'计算机1班','rank':3}删除指定键值对:>>>delstudent['rank']#删除排名信息>>>student{'name':'张三','score':91,'grade':'优秀','class':'计算机1班'}55字典的常用操作方法2.字典的常用操作方法表5-9字典的常用操作方法及描述操作方法描述d.keys()返回字典d的所有键d.values()返回字典d的所有值d.items()返回所有的键值对d.get(key,default)如果存在键key则返回相应值,否则返回默认值defaultd.clear()删除字典d中所有键值对56get()方法的安全访问方式与直接使用方括号[]访问不同,get()方法在键不存在时不会引发程序错误,而是返回一个预设的默认值,适合在不确定某个键是否存在时使用:>>>student={'name':'张三','score':91,'grade':'优秀'}>>>student.get('score',0)#键存在,返回对应值91>>>student.get('rank',0)#键不存在,返回默认值00575.3Python程序的输入输出在数据分析中,数据的来源和去向通常有两种方式:输入方面既可以通过input()函数由用户手动输入少量数据,也可以从文件中批量读取输出方面既可以通过print()函数将结果显示在屏幕上,也可以将结果写入文件保存585.3.1Python程序的输入1.使用input()函数输入数据input()函数用于从控制台获取用户输入的一行内容。括号内可以写入一个字符串作为提示信息,该信息将原样显示给用户。无论用户输入什么内容,input()函数均以字符串类型返回结果。>>>name=input("请输入学生姓名:")请输入学生姓名:张三>>>name'张三'>>>score=input("请输入成绩:")请输入成绩:88>>>score'88'>>>type(score)<class'str'>即使用户输入了数字"88",input()函数的返回值仍然是字符串'88',而非可直接计算的数值。若需要将输入的字符串作为数字参与计算,可使用eval()函数将其转换为对应的数值类型。>>>eval("1+1")2>>>score=eval(input("请输入成绩:"))请输入成绩:88>>>score+5#可直接参与数值运算9359从文件读入数据2.从文件读入相关的数据从文件中读取数据的基本步骤如下:第1步用open()函数根据文件名(及路径)打开文件第2步用read()方法或readline()方法读取文件内容第3步对读取到的数据进行处理第4步用close()方法关闭文件表5-10常用的文件打开模式模式含义'r'只读模式(默认),文件不存在时报错'w'覆盖写入模式,文件不存在时自动创建,文件已存在时清空原有内容后写入'a'追加写入模式,文件不存在时自动创建,文件已存在时在原有内容末尾继续写入60从文件读入数据:一次性读取全部内容已知一个文本文件"scores.txt"内容如下所示:姓名学号语文数学英语等级张三01889581良好李四02859186良好王五03819388良好赵六05869891优秀61(1)一次性读取全部内容使用read()方法可将文件内容一次性全部读入一个字符串变量:#程序文件chp5_1_readfile1.pyfile_object=open('scores.txt',encoding='utf-8')contents=file_object.read()print(contents)file_object.close()【说明】①若scores.txt与程序文件不在同一文件夹下,需在open()函数中指定完整路径,路径中使用正斜杠,例如:file_object=open('C:/Python/scores.txt',encoding='utf-8')②open()函数中的encoding参数用于指定文件的编码方式。在实际使用中如果不指定编码方式,且打开文件时出现乱码时,通常是编码方式不匹配所致,因此建议在程序中设置参数encoding='utf-8'。62从文件读入数据:逐行读取(2)逐行读取使用readline()方法可每次读取文件中的一行内容,多次调用即可逐行读取整个文件:#程序文件chp5_2_readfile2.pyfile_object=open('scores.txt','r'',encoding='utf-8')#'r'表示以读取模式打开line1=file_object.readline()#读取第一行print(line1)line2=file_object.readline()#继续读取下一行print(line2)file_object.close()运行结果为:姓名学号语文数学英语等级张三01889581良好【注意】readline()每次读取的一行内容末尾会保留换行符\n,因此在输出时可能看到额外的空行。若要去掉换行符,可使用字符串的strip()方法进行处理。635.3.2Python程序的输出1.使用print()函数输出数据在输出数据时,经常需要对输出内容进行格式化,使结果更加整齐易读。Python字符串提供了format()方法对输出内容进行格式化。语法格式为:<模板字符串>.format(<逗号分隔的参数>)模板字符串中用花括号{}表示槽,用于标记参数的输出位置。槽可以通过位置编号或关键字与参数对应:>>>print('{}的语文成绩为{}分,等级为{}。'.format('张三',88,'良好'))张三的语文成绩为88分,等级为良好。>>>print('{name}的{subject}成绩为{score}分。'.format(name='张三',subject='语文',score=88))张三的语文成绩为88分。>>>print('{0}的{1}成绩为{2}分。'.format('张三','语文',88))张三的语文成绩为88分。64输出格式控制还可以在槽中添加格式控制标记,对输出的对齐方式和宽度进行控制,语法格式为:{<参数序号>:<格式控制标记>}其中,^、<、>分别表示居中、左对齐、右对齐,数字表示输出宽度,其他字符表示填充字符:>>>print('{:^10}'.format('张三'))#居中对齐,宽度为10张三>>>print('{:<10}'.format('张三'))#左对齐,用'-'填充张三-------->>>print('{:*>10}'.format('张三'))#右对齐,用'*'填充********张三65将数据写入文件2.将数据写入文件将数据写入文件的基本步骤如下:第1步用open()函数以写入模式(w)打开文件第2步通过write()方法将各种数据写入文件第3步调用close()方法关闭文件以下示例将学生成绩信息写入文件result.txt:#程序文件chp5_3_writefile.pyname='张三'score=88grade='良好'file_object=open('C:/Python/result.txt','w')file_object.write('姓名:'+name+'\n')file_object.write('语文成绩:'+str(score)+'\n')file_object.write('等级:'+grade+'\n')file_object.close()执行后,result.txt文件内容如下:姓名:张三语文成绩:88等级:良好【说明】write()方法不会自动换行,需在每段内容末尾手动添加换行符\n;另外,write()方法只能写入字符串,若需写入数字或其他类型数据,需先用str()函数将其转换为字符串。665.4Python程序的控制结构程序由三种基本结构组成:顺序结构、分支结构和循环结构。任何程序,无论其功能多么复杂,都由这三种结构组合而成。顺序结构按照代码的书写顺序依次执行分支结构根据条件判断选择不同的执行路径,通过if语句实现循环结构对某段代码重复执行,通过for语句或while语句实现675.4.1分支结构分支结构概述分支结构允许程序根据不同的条件执行不同的代码。Python中的分支结构包括:单分支结构(if)仅在条件成立时执行指定的操作,否则跳过二分支结构(if-else)条件成立时执行一段代码,条件不成立时执行另一段代码多分支结构(if-elif-else)根据多个条件依次判断,执行第一个满足条件的代码块681.单分支if语句单分支if语句的语法格式为:if条件表达式:子语句块【注意】if语句的语法格式中,条件表达式后必须有冒号,子语句块必须缩进。例如,对某个学生的成绩进行判断,若大于或等于90分,则输出"优秀":score=92ifscore>=90:print("优秀")这是最简单的if语句,属于单分支结构,程序仅在条件成立时执行指定的操作,否则跳过。单分支结构适用于只需要在特定条件下执行某些操作,而不需要处理条件不成立情况的场景。692.二分支if-else语句二分支if-else语句的语法格式为:if条件表达式:子语句块else:子语句块else关键字后同样必须有冒号,其下的子语句块也必须缩进。70例如,对一组学生的成绩数据逐一判断,60分及以上输出"及格",60分以下输出"不及格":#程序文件chp5_4_score1.pyscores=[67,89,57,90,49]forscoreinscores:ifscore>=60:print(score,"及格")else:print(score,"不及格")运行结果为:67,及格89,及格57,不及格90,及格49,不及格713.多分支if-elif-else语句多分支if-elif-else语句的语法格式为:if条件表达式:子语句块elif条件表达式:子语句块else:子语句块72例如,将一组学生的成绩数据按等级划分:90—100分为"优秀",60—89分为"及格",60分以下为"不及格":#程序文件chp5_5_score2.pyscores=[67,89,57,90,49]forscoreinscores:if90<=score<=100:print(score,"优秀")elifscore>=60:print(score,"及格")else:print(score,"不及格")运行结果为:67,及格89,及格57,不及格90,优秀49,不及格Python支持链式比较的写法,90<=score<=100比score>=90andscore<=100更加简洁直观。此外,elif关键字是"elseif"的缩写,一个if语句中可以包含多个elif分支,程序会按顺序依次检查每个条件,一旦某个条件成立,便执行对应的语句块并跳出整个分支结构。735.4.2循环结构循环结构概述循环结构用于让一段代码被重复执行,是处理批量数据、自动化重复操作的重要机制。Python提供了for循环和while循环两种主要形式。for循环用于依次遍历某个可迭代对象中的每个元素,适合已知遍历范围的场景。while循环在判断条件为真时反复执行,适合循环次数事先未知、依据条件控制循环的场景。741.for循环语句for循环用于依次遍历某个可迭代对象中的每个元素,语法格式为:for循环变量in遍历结构:子语句块其中,遍历结构可以是字符串、列表、字典、range()函数等。每次循环,循环变量会依次取遍历结构中的一个元素,然后执行子语句块中的代码。75for循环:(1)遍历range()生成的数字序列range()是Python中用于生成整数序列的内置函数,其基本格式为range(start,stop),生成从start开始、到stop之前结束(包含start,不包含stop)的整数序列。range()函数还支持传入第三个参数作为步长,例如range(1,10,2)将生成奇数序列1,3,5,7,9。以下代码使用for循环遍历range()生成的数字序列,计算1到10的平方数:#程序文件chp5_6_square.pysquares=[]foriinrange(1,11):squares.append(i**2)print(squares)运行结果为:[1,4,9,16,25,36,49,64,81,100]76for循环:(2)遍历字符串for循环可以逐字符遍历字符串。例如,统计某学生姓名中各字的出现次数:#程序文件chp5_7_str_traverse.pyname="欧阳婷婷"char_count={}forcharinname:char_count[char]=char_count.get(char,0)+1print(char_count)运行结果为:{'欧':1,'阳':1,'婷':2}本例综合运用了字典操作以及if条件判断语句。其中,char_count.get(char,0)用于安全获取字典中已有字符的计数:若该字符尚未被记录,则返回默认值0作为计数起点。77(3)遍历列表for循环可以逐元素遍历列表。例如,逐一判断每位学生的成绩等级并输出:#程序文件chp5_8_list_traverse.pychinese_scores=[88,95,72,81,90,76,84,93,68,87]forscoreinchinese_scores:if90<=score<=100:grade='优秀'elifscore>=60:grade='及格'else:grade='不及格'print(score,',',grade)运行结果为:88,及格/95,优秀/72,及格/81,及格/90,优秀/76,及格/84,及格/93,优秀/68,及格/87,及格78for循环:(4)遍历字典通过字典的items()方法,可以在for循环中同时获取键和值:#程序文件chp5_9_dict_traverse.pystudent={'语文':88,'数学':95,'英语':81,'物理':76,'化学':90}forsubject,scoreinstudent.items():print(subject,':',score,'分')运行结果为:语文:88分数学:95分英语:81分物理:76分化学:90分也可以单独遍历字典的所有键或所有值:forsubjectinstudent.keys():#遍历所有键print(subject)forscoreinstudent.values():#遍历所有值print(score)792.列表解析式列表解析式(也称列表生成式)是Python提供的一种简洁语法,它将for循环与表达式合并为一行,用于快速生成新的列表。其语法格式为:新列表=[表达式for元素in可迭代对象if条件]其中,if条件部分可省略。示例1:生成平方数列表用列表解析式生成1到10的平方数列表:squares=[i**2foriinrange(1,11)]print(squares)运行结果为:[1,4,9,16,25,36,49,64,81,100]示例2:筛选优秀成绩从成绩列表中筛选出所有90分及以上的优秀成绩:#程序文件chp5_10_list_comprehension.pychinese_scores=[88,95,72,81,90,76,84,93,68,87]excellents=[scoreforscoreinchinese_scoresifscore>=90]print(excellents)运行结果为:[95,90,93]与传统的for循环相比,列表解析式的代码更加简洁紧凑,可读性更强,运行效率也更高,因此在数据处理和数据分析中被广泛使用。803.while循环语句while循环在判断条件为真时反复执行子语句块,特别适合在循环次数事先未知、需要依据某个条件是否成立来控制循环继续或结束的场景。其语法格式为:while判断条件:子语句块#程序文件chp5_12_while.pycurrent_number=0whilecurrent_number<=5:print(current_number)current_number+=1运行结果为:0/1/2/3/4/5上述代码中,循环每执行一次,变量current_number的值就增加1。当current_number的值超过5时,判断条件current_number<=5不再成立,循环随即结束。81while循环:综合应用示例从成绩列表中依次取出成绩,一旦遇到不及格的成绩就立即停止输出:#程序文件chp5_11_while.pychinese_scores=[88,95,57,81,90]index=0whileindex<len(chinese_scores)andchinese_scores[index]>=60:print(chinese_scores[index],'及格')index+=1print("检测到不及格成绩,停止输出。")运行结果为:88及格95及格检测到不及格成绩,停止输出。使用while循环时,必须确保判断条件最终能够变为假,否则程序将陷入无限循环(俗称"死循环")。通常需要在子语句块中修改与判断条件相关的变量(如本例中的index+=1),使循环能够正常结束。如果忘了递增索引,程序就会在同一位置不停地打印同一个值,导致循环无法终止。824.break语句和continue语句break用来跳出当前层次的循环,即跳出最内层的for或while循环,脱离该循环后程序从循环语句后的代码继续执行。continue用来结束当前当次循环,跳过循环体中剩余的语句,直接进入下一次循环的判断。#程序文件chp5_13_break_continue.pychinese_scores=[88,95,57,81,90]print("===break示例:遇到不及格成绩立即停止===")forscoreinchinese_scores:ifscore<60:breakprint(score,'及格')print("===continue示例:跳过不及格成绩===")forscoreinchinese_scores:ifscore<60:continueprint(score,'及格')运行结果为:===break示例:遇到不及格成绩立即停止===88及格95及格===continue示例:跳过不及格成绩===88及格95及格81及格90及格83break与continue的进一步对比示例#程序文件chp5_14_breakcontinue.pyforiin"thenumberchanges":ifi=='n':breakelse:print(i,end="")print()foriin"thenumberchanges":ifi=='n':continueelse:print(i,end="")运行结果为:thetheumberchages84第一个循环(break)程序逐个字符遍历字符串"thenumberchanges",当读取到字符'n'时,break语句被触发,循环立即终止,因此只输出了'n'之前的字符"the"。第二个循环(continue)continue语句使得程序在遇到字符'n'时跳过本次循环的剩余部分(即不执行print语句),但循环并未终止,而是继续处理后续字符,因此输出结果为去掉了所有字母'n'的"theumberchages"。85循环结构补充示例:例5-1【例5-1】读取文本文件scores.txt中的成绩数据,统计各等级的人数分布。解析:本题综合运用文件读取、字符串处理、字典统计和for循环遍历,是前面所学知识的综合应用。#程序文件chp5_15_grade_count.pyfile_object=open('scores.txt')contents=file_object.read()file_object.close()scores=[int(s)forsincontents.split()ifs.isdigit()]grade_count={}forscoreinscores:if90<=score<=100:grade='优秀'elifscore>=60:grade='及格'else:grade='不及格'grade_count[grade]=grade_count.get(grade,0)+1forgrade,countingrade_count.items():print(grade,':',count,'人')运行结果为(以实际文件内容为准):优秀:3人及格:6人不及格:1人代码中的s.isdigit()用于判断字符串s是否仅由数字组成,以此从文件内容中筛选出所有数值字符串。int(s)则将这些数字字符串逐个转换为整数,最终通过列表解析式生成一个纯数字的成绩列表,供后续等级统计使用。86循环结构补充示例:例5-2【例5-2】我国古代数学家张丘建在《算经》中提出"百钱买百鸡"问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,翁、母、雏各几何?解析:本题使用穷举法,通过for循环嵌套枚举所有可能的组合,再用if语句筛选满足条件的结果。设鸡翁、鸡母、鸡雏的数量分别为cock、hen、chick,则cock的取值范围为[0,20],hen的取值范围为[0,33],chick由100-cock-hen确定。#程序文件chp5_16_hundred_buy.pyforcockinrange(0,21):forheninrange(0,34):chick=100-cock-henifchick>=0andch

温馨提示

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

评论

0/150

提交评论