人工智能基础(Python实现)-课件 第2章python程序设计基础_第1页
人工智能基础(Python实现)-课件 第2章python程序设计基础_第2页
人工智能基础(Python实现)-课件 第2章python程序设计基础_第3页
人工智能基础(Python实现)-课件 第2章python程序设计基础_第4页
人工智能基础(Python实现)-课件 第2章python程序设计基础_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

第2章

python程序设计基础本章学习目标01了解Python的基本概念,以及数据类型、控制结构和函数。03熟悉Python的编程环境,掌握Anaconda的安装与配置方法,以及Spyder和Jupyter

Notebook的使用方法。05学习Python文件操作的基本方法,包括文件的打开、读取、写入和关闭。02掌握利用Python进行基本程序设计的基础理论及编程实现,包括变量的使用、运算符的应用、条件语句和循环语句的编写。04理解Python中模块和包的概念,掌握如何导入和使用标准库以及第三方库。06培养良好的编程习惯和代码风格。目录2.2Python程序控制语句2.3函数定义与调用2.1Python基础知识2.1Python基础知识

Python组合数据类型2.1.4内置函数2.1.5运算符与表达式2.1.6Python简介2.1.1Python编程环境2.1.2Python基本数据类型2.1.32.1.1Python简介丰富的标准库和第三方库多范式支持动态类型跨平台支持强大的社区支持简洁易读Python是一种功能强大且易于使用的编程语言,其具有以下主要特点。2.1.2Python编程环境Anaconda内置Spyder和JupyterNotebook工具,极大地提高了数据分析和代码开发的效率。Anaconda提供了一个强大的包管理器Conda,允许用户轻松地安装、更新、卸载和管理不同的库与依赖项。Anaconda是一个广泛使用的开源数据科学平台,集成了众多工具和库,方便用户进行科学计算、数据可视化和深度学习等任务。课外作业1.下载Anaconda安装包官网(/)下载速度较慢,可以选择国内的清华大学开源软件镜像站(/anaconda/archive/),根据电脑系统和CPU型号选择安装包,如Anaconda3-2024.10-1-Windows-x86_64.exe。2.安装Anaconda双击下载的安装程序,启动安装向导,然后按照向导一步一步进行即可。注意:在配置选项这一步,尽量勾选“创建开始快捷方式”,以便在“开始”菜单中找到Anaconda。关于“自动将Anaconda3添加到我的PATH环境变量”的选项。如果不勾选,则需要手动配置环境变量。如果希望Anaconda成为默认的Python版本,可以勾选“注册Anaconda3作为我默认的Python”。3.测试Anaconda是否安装成功使用快捷键“WIN+R”打开运行面板,输入“cmd”,然后点击“确认”按钮。在命令提示符窗口中,输入“conda--version”或“conda-V”命令,然后按回车键。如果显示Anaconda的版本号,则表示conda已经正确安装。在命令提示符窗口中,输入“python”命令,然后按回车键。如果显示Python的版本信息和提示符(>>>),则表示Python环境已经正确配置。请在自己电脑上安装anaconda2.1.2Python编程环境JupyterNotebook是一种基于网页的交互式开发工具,它支持多种编程语言,尤其以Python为主。通过JupyterNotebook,用户可以在单一环境中编写代码、运行程序、可视化结果并记录笔记,使其非常适合数据探索和项目展示。JupyterNotebookAnacondaPrompt是Anaconda环境中的一个命令行工具,专门用于管理和操作Anaconda生态系统。通过AnacondaPrompt执行与Conda相关的命令,例如创建、激活或删除虚拟环境,安装或更新Python包,以及管理Anaconda中的其他工具。AnacondaPromptSpyder是一个功能强大的集成开发环境(IDE),专为Python编程语言设计,特别适合科学计算和数据分析。Spyder提供了直观的用户界面,支持代码编辑、调试、变量浏览和绘图等功能。Spyder020103anaconda2.1.2Python编程环境SpyderJupyterNotebookAnacondaPrompt三个工具的操作演示程序编辑区IPython控制台Spyder开发环境JupyterNotebook工具Python程序主要书写规范(1)书写规则实例演示通常每行只写一条语句,避免多条语句出现在同一行上,以保证代码简洁明了。如果确实需要将多条语句写在同一行上,此时可以用分号(;)分隔多条语句。如果语句过长,可以使用续行符反斜杠(\)来表示该语句将在下一行继续。每条语句独占一行:使用分号分隔多条语句(不推荐,但合法):续行符示例:print("Hello,World!")x=10y=20x=10;y=20;print(x,y)content='在Python源程序中如果一行内\写多条语句,语句间用分号(;)隔开。\如果一条语句过长,可以使用反斜杠符\实现多行书写。'Python程序主要书写规范(2)缩进规则实例演示语句块是由一组相关联的代码行组成的,它们共同完成某个功能,Python通过缩进来划分代码块的层级,同一级的代码缩进必须一致。从显示效果来看,4个空格与1个Tab的缩进一致,但其实不同,故混用空格和Tab可能会导致缩进错误。

缩进非常重要Python程序主要书写规范(3)注释规则实例演示注释是一种在代码中嵌入说明文字的方式,用于解释代码的逻辑、功能或其他重要信息,方便程序员理解和维护代码,但它不会被Python解释器执行。单行注释以“#”开头,“#”后面的内容被视为注释。使用成对的三单引号(''')或三双引号(""")可实现多行注释。单行注释:多行注释:#单行注释示例x=10#这是一个单行注释'''多行注释示例这是一个多行注释,用于解释下面的代码块'''"""计算两个数的和参数:a--第一个数,b--第二个数返回:a和b的和"""Python程序的运行方式(1)交互方式实例演示启动交互方式:在Spyder中,IPython控制台就是交互方式的入口。“In[序号]:”提示符表示代码输入位置。代码执行:用户输入代码后,按回车键即可立即执行,并看到执行结果。使用“Out[序号]:”提示符表示执行结果的输出位置获取帮助信息:在交互方式下,用户可以使用help()函数来获取关于Python中各种函数、对象和模块的文档和帮助信息。In[1]:a=20In[2]:b=10In[3]:a+bOut[3]:30In[4]:a-bOut[4]:10Python程序的运行方式(2)文件方式实例演示创建Python文件:在Spyder中,用户可以新建一个Python文件(通常以.py为扩展名),并在其中编写代码。保存代码:在Spyder中,可以通过点击工具栏上的保存按钮或使用快捷键(如Ctrl+S)来保存代码。运行Python文件:在Spyder中通过点击运行按钮或使用快捷键来执行该文件。Spyder将调用Python解释器来读取并执行文件中的代码,并在IPython控制台中显示执行结果。2.1.3Python基本数据类型可以改变的操作数、变量名变量保持不变的操作数、立即数常量变量知识点实例演示通过给变量名赋值的方式来创建变量,例:可以改变变量的值,下面的命令将变量a的值改为4:Python中,不但可以改变变量的值,还可以改变它的类型:可以同时给多个变量赋值,如:a=3b=‘WelcometoChina’c=(34,56,78)In:a=4In:a=[2,5,7]In:a,b,c=2.3,3.5,6.7变量知识点实例演示Python变量命名规则如下:变量名只能包含字母(a-z或A-Z)、数字(0-9)和下划线(_)变量名不能以数字开头变量名区分大小写变量名不能使用Python的保留关键字Python变量命名没有强制不能使用内置函数,但是此后不能再使用该内置函数。del是一个常用的关键字,用于删除对象。它可以删除变量、列表中的元素、切片,或整个列表。使用del后,删除的对象将从内存中移除,且再也无法访问。In:x=10delx#访问x会引发NameError,因为x已被删除例如,list()是一个内置函数,用来构造一个列表。执行以下语句会报错“TypeError:'list'objectisnotcallable”。原因是第一个语句把list定义为一个变量,它不再是一个内置函数。In:list=[3,4,5]In:list('abc')问题:怎么恢复list内置函数?python关键字数据类型基本数据类型基本数据类型是用于存储单个值的数据类型。整型:表示整数值,如213,1701等。浮点型:表示带有小数部分的数值,如3.14,78.56等。复数:表示复数,如2+3j,10.2+6.7j等。布尔值:仅有两个值:真和假,用True和False表示。字符串:表示文本数据,需要用一对界定符号。Python的界定符号可以是单引号、双引号、三单引号及三双引号。一对单引号和一对双引号可以生成一个单行字符串,如'广东'和"广州"。一对三单引号和一对三双引号可以生成一个多行字符串,如:'''广东金融学院'''三单引号和三双引号也可表示注释,如何区分是作为注释还是多行字符串?数据类型基本数据类型基本数据类型是用于存储单个值的数据类型。整型:表示整数值,如213,1701等。浮点型:表示带有小数部分的数值,如3.14,78.56等。复数:表示复数,如2+3j,10.2+6.7j等。布尔值:仅有两个值:真和假,用True和False表示。字符串:表示文本数据,需要用一对界定符号。用转义字符表示在字符串中无法直接表示或具有特殊含义的字符,转义字符以反斜杠(\)开始,后跟一个或多个字符,这些字符组合起来表示一个特定的字符或执行某些特定的操作。例如,一个包含\n转义字符的字符串“Hello,Tom!\nThisisanewhotel.”。输出这个字符串的结果为:Hello,Tom!Thisisanewhotel.Python常见的转义字符在字符串前面加上r或者R,表示字符串中的字符都不转义。例如:由于\t将被识别成转义字符,字符串“D:\test\exer”将不能表示合法的Windows资源管理器路径。为了避免这种情况,可以在字符串前面加上r或者R,表示字符串中的字符都不转义,字符串“r'D:\test\exer'”就可以表示合法的路径了。数据类型基本数据类型基本数据类型是用于存储单个值的数据类型。整型:表示整数值,如213,1701等。浮点型:表示带有小数部分的数值,如3.14,78.56等。复数:表示复数,如2+3j,10.2+6.7j等。布尔值:仅有两个值:真和假,用True和False表示。字符串:表示文本数据,需要用一对界定符号。在Python中,字符串是不可变的,这意味着一旦创建了字符串对象,其内容就无法被修改。由于这种特性,字符串对象没有增加或删除元素的方法。任何试图修改字符串内容的操作都会生成一个新的字符串对象,而不是在原有的字符串上直接修改。字符串的常用成员方法如表2-3所示。字符串的常用成员方法字符串的常用成员方法format()方法实例演示format()成员方法以指定的格式将变量插入字符串中,从而生成一个新的字符串,其基本语法如下所示。"模板字符串{}{}".format(变量1,变量2)模板字符串中包含的成对花括号,称为占位符,它的作用是将参数中的变量插入模板字符串中的占位符去,生成新的字符串。变量与占位符可以按照从左到右的顺序一一对应。In:"身高{}厘米,年龄{}岁".format(170,28)Out:'身高170厘米,年龄28岁'字符串的常用成员方法format()方法实例演示也可以使用位置参数指定变量与占位符的对应关系,占位符中的序号代表format()方法的参数序号,从0开始。如果参数是实数,则可以指定保留小数位数。In:"身高{1}厘米,年龄{0}岁".format(28,170)Out:'身高170厘米,年龄28岁'In:"Pi保留3位小数是:{:.3f}".format(3.141592653)Out:'Pi保留3位小数是:3.142'字符串的常用成员方法find()方法实例演示find()用于查找子字符串在主字符串中的位置。它返回子字符串首次出现位置的索引,如果子字符串不存在,则返回-1。In:"Hello,world!".find("world")Out:7In:"Hello,world!".find("你好")Out:-1字符串的常用成员方法split()方法实例演示split()将字符串分割成一个列表,分隔符由参数指定。如果省略参数,默认按空白字符分割。In:'19.382.539.028.8'.split()Out:['19.3','82.5','39.0','28.8']In:'93,85,90,88'.split(',')Out:['93','85','90','88']字符串的常用成员方法join()方法实例演示join()用于将可迭代对象(如列表、元组等)中的元素连接成一个字符串。它通过指定的分隔符(即调用join()的字符串)将可迭代对象中的每个元素连接起来,生成一个新的字符串。join()方法只能用于包含字符串元素的可迭代对象。In:'+'.join(['语文','数学','英语'])Out:'语文+数学+英语'什么是可迭代对象?数据类型组合数据类型组合数据类型则将若干个值组合成一个单一的数据项。组合数据类型主要有列表元组字典集合组合数据类型列表列表是一种有序且可变的集合,用于存储多个元素。列表中的元素可以是任意类型,包括数字、字符串甚至其他列表。创建列表有[]和list()两种方法。通过方括号[]定义时,元素之间用逗号分隔。list()由一个可迭代对象构造一个列表。实例演示In:[1,2,3]In:['a','b','c']In:[[4,5,],[6,7]]In:list('abc')Out:['a','b','c']组合数据类型元组元组是一种有序且不可变的集合,用于存储多个元素。与列表类似,元组中的元素可以是任意类型,但一旦创建,元组的内容就无法更改。创建元组有()和tuple()两种方法。元组通过圆括号()定义时,元素之间用逗号分隔。tuple()由一个可迭代对象构造一个元组。实例演示In:(2.3,3.5)In:('gduf','guang')In:(1213,)In:tuple(['a','b','c'])Out:('a','b','c')组合数据类型集合集合是一种无序且不重复的元素集合。创建集合有{}和set()两种方法。集合通过花括号{}定义时,元素之间用逗号分隔。集合中的每个元素都是唯一的,这意味着集合自动去除了重复的元素。如{2,3,3,4}创建的集合,结果是集合{2,3,4}。set()由一个可迭代对象构造一个集合。实例演示In:{2,3,3,4}Out:{2,3,4}In:set('11223344')Out:{'1','2','3','4'}组合数据类型字典字典是一种用于存储键值对且无序的数据类型。字典的键必须是不可变类型,如字符串、整数或元组,每个键必须是唯一的,而值可以是任意类型。创建字典有{}和dict()两种方法。字典通过花括号{}定义,键值对之间用冒号分隔,每对键值对之间用逗号分隔。dict()方法。实例演示In:{"姓名":"张三","年龄":25,"籍贯":"广州"}In:dict(name="Alice",age=25,city="NewYork")Out:{'name':'Alice','age':25,'city':'NewYork'}In:dict([("name","Alice"),("age",25),("city","NewYork")])Out:{'name':'Alice','age':25,'city':'NewYork'}可以使用关键字参数的方式直接传递键值对来创建字典。可以使用包含元组或列表的列表来创建字典,每个元组或列表表示一个键值对。组合数据类型1.索引访问单个元素序列中的元素是有序排列的,可以通过索引获取单个元素或通过切片操作获取多个元素。用整数索引访问单个元素,Python序列元素有正索引和负索引,如图2-10所示。正索引从序列的起始位置(左侧)开始计数,索引值从0开始,依次递增。负索引从序列的末尾位置(右侧)开始计数,索引值从-1开始,依次递减。一般形式为:列表对象[索引]实例演示In:a=['广','东','金','融','学','院']In:a[1]Out:'东'序列对象的索引组合数据类型2.切片访问一个子序列切片是一种用于从序列对象中提取子序列的方法。切片操作不会修改原始序列,而是返回一个新的序列。通过指定起始位置、结束位置和步长从序列中提取出一个新的子序列,如:sequence[start:stop:step](1)start:切片的起始索引(包含该位置的元素)。如果省略,默认为序列的开头。(2)stop:切片的结束索引(不包含该位置的元素)。如果省略,默认为序列的结尾。(3)step:步长,表示切片的间隔。默认值为1,表示每个元素都被包括在内。实例演示In:myList=[10,20,30,40,50]In:print(myList[1:4])#print函数的功能是输出内容In:print(myList[:3])In:print(myList[2:])In:print(myList[::2])上面4条print函数的输出结果是什么?[20,30,40][10,20,30][30,40,50][10,30,50]组合数据类型3.遍历可迭代对象的全部元素使用遍历方法访问可迭代对象的全部元素,如字符串、元组、列表、集合和字典等。for...in是一种用于遍历可迭代对象的循环结构,可以依次访问可迭代对象中的每个元素。它的语法如下:forelementiniterable:#对element进行操作element:每次迭代时,element代表可迭代对象中的一个元素。iterable:可迭代对象,如range对象、字符串、列表、字典等。实例演示遍历range对象:In:forvinrange(8): print(v,end='')Out:01234567遍历字符串:In:forvin"Guangdong": print(v,end='')Out:Guangdong遍历列表:In:forvin[2.1,3.4,6.5,1.8]: print(v,end='')Out:2.13.46.51.8列表的常用成员方法列表的常用成员方法append()用于在列表的末尾添加一个新元素。调用append()方法后,新元素会直接附加到列表的最后位置,列表的长度会增加1。extend()用于将另一个可迭代对象(如列表、元组、集合等)的所有元素一次性添加到当前列表的末尾。insert()用于在列表的指定位置插入一个新元素。insert()方法需要两个参数:插入位置的索引i和要插入的元素x。调用insert(i,x)后,元素x会被插入列表中索引i处,原本位于该位置及其后面的元素都会向后移动一位。实例演示In:a=[1,2,3]

a.append(4)

print(a)Out:[1,2,3,4]In:a=[1,2,3]

a.extend([4,5,6])

print(a)Out:[1,2,3,4,5,6]In:a=[1,2,3]

a.insert(1,4)

print(a)Out:[1,4,2,3]列表的常用成员方法remove()用于从列表中移除第一次出现的指定元素。它的参数表示要删除的元素,而不是索引。remove()会搜索列表中的元素,并删除找到的第一个匹配项。如果列表中不存在指定的元素,remove()会引发ValueError异常。pop()用于移除并返回列表中指定索引位置的元素。它的参数表示要移除的元素的索引。pop()默认移除并返回列表中的最后一个元素。pop()方法不仅移除指定的元素,还将其返回,允许对该元素进行进一步处理。如果列表为空或索引超出范围,pop()会引发IndexError异常。实例演示In:a=[1,2,3,2,4]

a.remove(2)

print(a)Out:[1,3,2,4]In:a=['a','b','c','d']r=a.pop(2)print(r)print(a)Out:cOut:['a','b','d']下面的列表a中有两个元素2,remove只删除第一个。列表的常用成员方法index()用于查找并返回指定元素在列表中第一次出现的索引。如果列表中存在多个相同的元素,index()只会返回第一个匹配项的索引。如果列表中不存在指定的元素,index()会引发ValueError异常。count()用于统计列表中某个指定元素出现的次数。count()方法遍历整个列表,返回指定元素在列表中出现的次数。实例演示In:a=['a','b','c','d']i=a.index('b')print(i)Out:1In:a=['a','b','c','d','b','d','b']c=a.count('b')print(c)Out:3列表的常用成员方法sort()是列表对象的一个方法,用于对列表中的元素进行原地排序,修改原列表,将其元素按照指定的排序顺序重新排列。sort()方法默认以升序排列列表中的元素,但可以通过reverse参数来进行降序排序。实例演示In:a=[3,1,4,1,5,9]a.sort()print(a)Out:[1,1,3,4,5,9]In:a=[3,1,4,1,5,9]a.sort(reverse=True)print(a)Out:[9,5,4,3,1,1]range()函数range()函数使用频率较高,生成一个可迭代对象,对象的值是不可变的,并且在实际迭代时才会计算出具体的值,输出对象不能输出序列值,常用来构造列表以及用于控制循环的迭代次数。它可以接受一个、两个或三个参数,用于指定序列的起始值、结束值和步长,它的语法格式如下:range(start,stop,step)(1)start(可选):序列的起始值,默认为0(2)stop:序列的结束值(不包括该值),是必须的(3)step(可选):两个值之间的步长,默认为1实例演示只指定结束值生成序列:In:r=range(5)print(list(r))Out:[0,1,2,3,4]指定起始值和结束值生成序列:In:r=range(3,8)print(list(r))Out:[3,4,5,6,7]指定起始值、结束值和步长生成序列:In:r=range(0,10,2)print(list(r))Out:[0,2,4,6,8]指定负数步长生成反向序列:In:r=range(15,0,-3)print(list(r))Out:[15,12,9,6,3]列表生成式列表生成式是一种简洁而高效的创建列表的方式。通过列表生成式,可以用简洁的代码生成一个新的列表,该列表的每个元素是对已有序列或可迭代对象的操作结果。列表生成式的语法格式如下:[expressionforiteminiterableifcondition](1)expression:生成新列表中每个元素的计算表达式。(2)item:可迭代对象中的每个元素。(3)iterable:任何可迭代对象,如列表、元组、字符串、字典等。(4)condition(可选):一个条件表达式,用于过滤符合条件的元素。实例演示生成平方数列表:In:squares=[x**2forxinrange(10)]print(squares)Out:[0,1,4,9,16,25,36,49,64,81]指定条件,筛选出偶数:In:evens=[xforxinrange(10)ifx%2==0]print(evens)Out:[0,2,4,6,8]统计列表的元素长度:In:words=['python','list','comprehension']upper_words=[len(word)forwordinwords]print(upper_words)Out:[6,4,13]二维列表如果列表的每个元素都是一个列表,就形成列表嵌套,称为二维列表。依次类推,还可以形成三维,甚至高维列表。二维列表常用于表示表格、矩阵或其他二维数据。通过两层索引来访问二维列表中的元素——第一个索引用于访问行,第二个索引用于访问该行中的具体元素。这两个索引分别称为二维列表的行索引和列索引,一般形式如下:列表对象[行索引][列索引]实例演示In:a=[[1,2,3],[4,5,6],[7,8,9]]例如,下面的命令创建了一个二维列表a,a有3个元素,每个元素是一个长度为3的一维列表。它可以表示一个3行3列的表格,或者3行3列的矩阵。In:a[1][2]Out:6元组的常用成员方法元组与列表不同的是,元组一旦创建,其内容就不能被修改(即不能增删元素或改变元素值),所以元组对象的成员方法也较少,元组又称为轻量级列表。元组的成员方法只有count和index。这两个方法的使用方法与列表对应的方法相同。字典的常用成员方法字典允许以键(key)和值(value)进行快速查找、插入和删除操作,字典对象的成员方法如表2-5所示。字典的常用成员方法字典的访问非常简单且直观。要访问字典中的值,只需通过键来索引字典。可以使用方括号[]语法来获取对应键的值。如果访问的键不存在,会引发KeyError。为了避免这种情况,可以使用字典的get()方法,它会在键不存在时返回None或指定的默认值。实例演示In:font={'字体':'宋','字号':14,'颜色':'黑色'}In:font['字体']Out:'宋'In:font.get('颜色')#未指定默认值Out:'黑色'In:font.get('字号',12)#如果font对象没有字号键,则返回12Out:14字典的常用成员方法要在字典中增加一项,只需为新的键赋值。如果该键已存在,原有的值会被覆盖。实例演示In:font={'字体':'宋','字号':14,'颜色':'黑色'}font['加粗']='是'fontOut:{'字体':'宋','字号':14,'颜色':'黑色','加粗':'是'}In:font['字号']=12fontOut:{'字体':'宋','字号':12,'颜色':'黑色'}加粗键不存在,将为字典增加该键,结果如下:字号键已存在,将改变对应的值,结果如下:字典的常用成员方法pop()用于删除并返回指定键对应的值。pop()方法允许安全地移除字典中的某个键值对,同时获取被移除的值。实例演示In:ziti=font.pop('字体')zitiOut:'宋'In:fontOut:{'字号':14,'颜色':'黑色'}#字体键已经从字典中移除字典的常用成员方法items()、keys()和values()分别用于获取字典的键值对、键和值,均返回一个可迭代对象。items()返回的可迭代对象包含字典中所有键值对,每个键值对以元组的形式存在。keys()返回的可迭代对象包含字典中所有键。values()返回的可迭代对象包含字典中所有值。需要注意的是,这三个函数返回的对象都不是列表,而是可迭代对象,可以用for…in进行遍历实例演示In:font.items()Out:dict_items([('字体','宋'),('字号',14),('颜色','黑色')])In:font.keys()Out:dict_keys(['字体','字号','颜色'])In:font.values()Out:dict_values(['宋',14,'黑色'])In:foriteminfont.items():print(item)Out:('字体','宋')('字号',12)('颜色','黑色')集合集合常用来去除可迭代对象中的重复元素。实例演示In:a=[1,2,2,3,4,4,4,5]b=set(a)print(b)Out:{1,2,3,4,5}下面的例子去除列表中的重复元素,得到不重复的元素。2.1.5内置函数数据类型转换int()、float()、str()、list()、tuple()、set()、dict()对象与属性type(),dir()数学运算abs()、round()、max()和min()序列操作len()、sum()、range()输入输出input()、print()数据类型转换函数int()、float()、str()、list()、tuple()、set()、dict()等函数用于在不同的数据类型之间进行转换。int()可以将字符串或者实数转换为整数,int("123")得到整数123,int(3.45)得到整数3,将实数转换为整数会造成信息丢失。函数float()可以将字符串或者整数转换为实数,float('3.14')得到3.14,float(56)得到56.0。函数str()将多种对象转换为字符串,包括整数、实数以及组合数据类型等,str(1248)得到字符串'1248'。str([2,5,7])的结果是什么?数学运算函数包括abs()(取绝对值)、round()(四舍五入)、max()和min()(求最大值和最小值)等常用的数学函数。实例演示In:max([2.1,5.4,3.8])Out:5.4In:round(3.25632,2)Out:3.26序列操作函数函数len()可以获取序列的长度sum()可以对序列中的元素求和range()函数用于生成一个整数序列。实例演示In:len('Thankyou!')Out:10In:sum([3,4,5])Out:12输入输出函数input()用于从用户获取输入input()用于从用户那里获取输入数据。程序运行时,input()会暂停执行,并等待用户输入文本。当用户按下回车键后,输入的数据会以字符串形式返回。它的参数是一个字符串,用于向用户显示提示信息。因为无论用户输入的是什么内容,input()的返回都是字符串,所以如果需要得到整数或者实数,需要用int()和float()函数进行转换。实例演示In:input("Pleaseenteryourname:")Pleaseenteryourname:xiaoliOut:'xiaoli'In:int(input("Pleaseenterininteger:"))Pleaseenterininteger:23Out:23输入输出函数print()用于将输出内容显示在控制台或终端上。它可以将任意数量的对象作为参数,并将它们转换为字符串后输出到标准输出设备(通常是屏幕)。print()可以接受多个参数,并将它们以空格分隔后输出。每个参数都可以是不同的数据类型,如字符串、数字、列表等。print()默认是以空格符分隔输出项,以换行结束。可以使用sep参数指定参数之间的分隔符。使用end参数指定输出结束后输出的字符,而不是以换行结束。实例演示In:print("Python","is","fun!")Out:Pythonisfun!In:print("Python","is","fun!",sep='---',end='');print('Iloveit!')Out:Python---is---fun!Iloveit!2.1.6运算符与表达式Python中的运算符用于执行各种操作,例如数学计算、比较、逻辑判断和赋值等。运算符是Python编程的基础部分,它们使得我们可以对变量和数据进行操作,从而实现各种功能。Python提供了丰富的运算符类型,包括算术运算符、关系运算符、逻辑运算符、赋值运算符和成员运算符。算术运算符算术运算符用于执行基本数学运算。它们允许我们对数值数据进行加、减、乘、除、取整除法、求余、幂运算等操作,帮助开发者在程序中实现各种数值计算,算术运算符如表2-6所示。当只有一个运算对象时,-是求该对象的相反数。当有两个运算对象时,-是减法运算。//和%常用于整数之间,分别计算两整数相除的商和余数。关系运算符关系运算符(也称为比较运算符)用于比较两个值的大小,判断两个值是否相等、大小关系如何等,当使用关系运算符进行比较时,其结果为布尔值True或False,关系运算符如表2-7所示。实例演示In:a=87a>=60Out:TrueIn:a<=100Out:True逻辑运算符逻辑运算符是用于布尔值(True和False)之间的运算,逻辑运算符如表2-8所示。实例演示要表达变量a的值为60~100,可以这样写:In:(a>=60)and(a<=100)Out:True也可以这样写,更接近数学中的书写习惯:In:60<=a<=100Out:True赋值运算符基本赋值运算符是等号=,它将右侧的表达式结果赋给左侧的变量。除了基本赋值运算符外,Python还提供了多种复合赋值运算符,结合了算术运算和赋值操作,如表2-9所示。实例演示In:a=5b=a+3aOut:5In:bOut:8In:a=4a+=3aOut:7复合赋值运算符的运算规则如下:a+=b相当于a=a+b。a-=b–3的结果是什么?成员运算符成员运算符用来测试一个值是否存在于字符串、列表、元组、集合或字典中,成员运算符如表2-10所示。实例演示In:'abc'in'abcdef'Out:TrueIn:3in[3,6,9]Out:TrueIn:font={'字体':'宋','字号':14,'颜色':'黑色'}'字体'infontOut:TrueIn:'宋'infontOut:Falsein可以测试一个键是否在字典中,而不能测试一个值是否在字典中。表达式表达式是由操作数(即变量、常量)和运算符连接起来符合语法规则的式子。运算符的优先级决定了表达式中运算符的执行顺序。运算符优先级定义了不同运算符计算顺序,优先级较高的运算符会先于优先级较低的运算符进行计算。Python运算符优先级从高到低大致为:算术运算符、关系运算符、逻辑运算符、赋值运算符、成员运算符。为了确保复杂表达式的计算顺序符合需求,使用括号来明确指定优先级是一种良好的编程习惯,使用括号使得程序的可读性更高。实例演示a>=100anda<=200anda%2==0((a>=100)and(a<=200))and(a%2==0)哪个表达式可读性高?2.2Python程序控制语句2.2.2循环语句2.2.3异常处理语句2.2.1条件语句2.2.1条件语句条件语句一般形式如下,其中条件1和else后面的冒号必不可少要素:条件1、代码块1和代码块2执行过程:先计算条件1,若为真则执行代码块1,否则执行代码块2if条件1:代码块1else:代码块2实例演示判断输入的成绩是否及格。a=int(input('输入学生成绩:'))ifa>=60:print('成绩及格')else:print('成绩不及格')判断输入的字符是否为大写字母。a=input('输入一个字符:')if'A'<=a<='Z':print('是大写英文字母')else:print('不是大写英文字母')判断输入的3个国家名字是否包含中国。x=input("输入3个国家名字")ifx.find('中国')>=0:print('包含中国')else:print('不包含中国')判断输入的课程是否合法。course=['计算机','数学','英语']x=input("输入选择的课程:")ifxincourse:print('选课成功')else:print('选课失败')实例演示grades=[85,90,38,52,88,41,63]#计算平均分average=sum(grades)/len(grades)#判断平均分是否及格ifaverage>=60:print("平均成绩及格。")else:print("平均成绩不及格。")【例2-1】列表grades=[85,90,38,52,88,41,63]记录了一个班学生的成绩,判断该班学生的平均成绩是否及格,并输出相应的提示信息。单分支结构特殊情况下,条件语句可以没有else分支,形成单分支条件语句,其一般形式如下:实例演示a=float(input('输入一个实数:'))ifa<0:a=-aprint(a)例如,输入一个实数,计算并输出它的绝对值。当实数a大于等于0时,它的绝对值就是它自身,无须计算,当a小于0时,它的绝对值是它的相反数,需要计算,从而形成单分支条件语句。if条件1:代码块1多分支结构当需要根据多种不同的条件执行不同的代码时,就会形成多分支条件语句,其一般形式如下:实例演示bmi=float(input('输入bmi指数:'))ifbmi<18.5:print('偏瘦')elifbmi<24:print('正常')elifbmi<28:print('超重')else:print('肥胖')成年人的BMI指数分类程序如下:if条件1:代码块1elif条件2:代码块2…elif条件n:代码块nelse:代码块n+1实例演示#输入一个月份month=int(input("请输入月份(1-12):"))#判断月份所属的季节if3<=month<=5:print("{}月是春季".format(month))elif6<=month<=8:print("{}月是夏季".format(month))elif9<=month<=11:print("{}月是秋季".format(month))elifmonth==12or1<=month<=2:print("{}月是冬季".format(month))else:print("输入的月份不合法")【例2-2】编写一个程序,输入一个月份的数字,输出该月份所在的季节。规则为:3月到5月为春季,6月到8月为夏季,9月到11月为秋季,12月到2月为冬季。嵌套的分支结构嵌套的分支结构的一般形式为:在嵌套的分支结构中,保持代码缩进整齐是关键。Python依赖缩进来区分代码块,因此不正确的缩进会导致语法错误或逻辑错误。if条件1:if条件2: 代码块1else: 代码块2代码块3else:if条件3: 代码块4else: 代码块5代码块6实例演示#输入年份和月份year=int(input("请输入年份:"))month=int(input("请输入月份(1-12):"))#嵌套分支条件判断月份的天数ifmonth==1ormonth==3ormonth==5ormonth==7ormonth==8ormonth==10ormonth==12:print("{}月有31天".format(month))elifmonth==4ormonth==6ormonth==9ormonth==11:print("{}月有30天".format(month))elifmonth==2:#判断是否为闰年if(year%4==0andyear%100!=0)or(year%400==0):print("{}月有29天(闰年)".format(month))else:print("{}月有28天".format(month))else:print("输入的月份不合法")【例2-3】编写一个程序,输入一个年份和月份,判断该月份有多少天。如果是2月份,还需要判断该年份是否为闰年(2月有29天)或平年(2月有28天)。其他月份按常规天数处理。2.2.2循环语句循环结构是程序设计中的一种核心控制结构,允许反复执行指定代码,直到特定条件不再满足为止。循环结构不仅可以处理简单的任务重复,还能根据程序的运行情况动态调整执行次数,是编写高效、灵活程序的重要工具之一。Python中可以用for和while实现循环结构,称为循环语句。for循环通常用于已知迭代次数的情况,例如遍历一个可迭代对象,它依次访问对象中的每个元素,无须手动管理循环计数器。while循环适用于迭代次数未知的情况,它根据一个条件来决定是否继续执行循环体,需要手动设置和更新循环条件,让循环趋向于结束,否则会形成无限循环。2.2.2循环语句while循环语句一般形式要素:循环条件1、代码块1执行过程:循环条件1为真就执行代码块1,否则结束循环。while循环条件1:代码块1while循环语句在while循环中,通过比较一个或多个变量的值形成循环条件1,从而控制循环过程,这些变量称为循环变量。实例演示i=1s=0whilei<=100:s+=ii+=1#改变循环变量的值print('1到100的和是:',s)在下面的程序中,变量i就是循环变量,在循环语句的代码块中,语句i+=1必不可少,它的作用是改变循环变量的值,让循环趋向于结束。这段代码的功能是什么?break和continue语句break语句是用于提前终止循环的一条控制语句,常用于for和while循环中。当程序执行到break时,当前循环立即停止,程序跳出循环体,继续执行循环之后的代码。continue语句是用于跳过当前循环的剩余代码,立即开始下一次循环的一条控制语句,常用于for和while循环中。当程序执行到continue语句时,循环体后续的代码将被忽略,直接进入下一次循环判断。它通常用于在某些条件下跳过不需要处理的部分,继续执行其他部分。实例演示fromrandomimportrandinta=[randint(5000,20000)foriinrange(100)]forvina:ifv>10000:print(v)break【例2-4】一个列表代表某公司100名员工的工资,找到第一个大于10000元的员工工资,并输出该工资。根据题目要求,当找到第一个大于10000元的工资时,后面的列表元素就不必再访问了,因此应立即退出循环,不再继续执行多余的操作。实例演示fromrandomimportrandinta=[randint(500,2000)foriinrange(10)]forvina:ifv%2==1:continuev//=2print(v)【例2-5】遍历一个整数列表中的元素,对其中的偶数减半输出。在遍历列表的过程中,发现偶数,则对其减半操作,然后输出。如果发现奇数,则跳过该操作。循环嵌套如果在一个循环的代码块内又包含另一个循环语句,就形成循环嵌套。依此类推还可以形成多层嵌套。循环嵌套使得程序能够处理多维数据或执行更复杂的任务。在嵌套循环中,外层循环每执行一次,内层循环会完整运行一遍。这种结构经常用于处理表格、矩阵、多维数组等场景,或实现多重条件下的重复操作。实例演示a=[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]foriinrange(4):forjinrange(4):print(a[i][j],end='')print()【例2-6】二维列表a表示一个4行4列的二维矩阵,按行输出矩阵的所有元素,元素之间用空格分隔。处理二维数据需要采用二层嵌套循环,外层循环变量表示行索引,内层循环变量表示列索引。外层循环每迭代一次,内存循环就要全部执行一遍,故内层循环的代码需要执行的次数是4*4,即16次。2.2.3可迭代对象的遍历方法Python中的许多内置函数会返回可迭代对象,故遍历可迭代对象是一种常见操作。内置函数map()接受两个参数:一个函数和一个可迭代对象,它将一个函数应用于可迭代对象中的每个元素,并返回一个新的可迭代对象,其元素为函数作用的结果。实例演示In:chengji=['87','95','76','84']mapped=map(int,chengji)print(list(mapped))Out:[87,95,76,84]在上面的例子中,map()的第一个参数是内置函数int(),第二个参数是一个元素是字符串的列表。它的作用是将int()应用到列表中的每一个元素,即将列表中的每一个元素转换成整数,结果保存在一个可迭代对象中。最后将该对象转换成列表才可以输出其中的内容。2.2.3可迭代对象的遍历方法内置函数zip()接收两个或多个可迭代对象作为参数,将可迭代对象中对应位置的元素配对,形成一个元组,并将元组作为一个可迭代对象的元素,最后返回该可迭代对象。实例演示In:names=['Alice','Bob','Charlie']scores=[85,92,78]zipped=zip(names,scores)print(list(zipped))Out:[('Alice',85),('Bob',92),('Charlie',78)]在上面的例子中,int()的两个参数是两个列表,它将两个列表中对应位置的元素配对,形成一个元组,并返回一个可迭代对象,最后将该对象转换成列表才能输出其中的内容。2.2.3可迭代对象的遍历方法Python遍历可迭代对象有三种方法(1)用for…in遍历实例演示fromrandomimportrandinta=[randint(10,200)foriinrange(100)]t=0forvina:ifv%3==0:t+=1print('3的倍数数量是:',t)【例2-7】求一个长度为100的随机整数列表中,3的倍数有多少个。2.2.3可迭代对象的遍历方法Python遍历可迭代对象有三种方法(2)使用enumerate()内置函数用for…in遍历时,能够访问可迭代对象的全部元素,但是很难掌握每个元素的索引。enumerate()内置函数在遍历可迭代对象时同时获取元素的索引和值,返回一个包含索引和值的元组,常用于需要在循环中同时访问元素和其索引的场景。实例演示fromrandomimportrandinta=[randint(0,100)foriinrange(50)]fori,vinenumerate(a):print(i+1,v)【例2-8】一个列表保存了一个班50名学生的成绩,输出每个学生的序号以及对应的成绩。用enumerate函数遍历时,同时得到元素的索引和值,分别赋给变量i和v,由于第一个元素的索引是0,给它加1以表示学号。2.2.3可迭代对象的遍历方法Python遍历可迭代对象有三种方法(3)依次遍历可迭代对象的索引,用while和for…in均可。需要注意的是,在用for…in或者enumerate函数时,修改遍历的变量不能作用于原来的列表,故右边的程序是错误的:实例演示fromrandomimportrandinta=[randint(0,100)foriinrange(10)]print(a)forvina:v*=2print(a)【例2-9】将一个整数列表中的每个元素变成原来的2倍。for循环之前和之后输出来的列表是相同的,原因是语句v*=2只是把变量v变成了原来的2倍,并没有改变列表中的元素。2.2.3可迭代对象的遍历方法Python遍历可迭代对象有三种方法(3)依次遍历可迭代对象的索引,用while和for…in均可。实例演示fromrandomimportrandinta=[randint(0,100)foriinrange(10)]print(a)foriinrange(len(a)):a[i]*=2print(a)【例2-9】将一个整数列表中的每个元素变成原来的2倍。下面的程序用函数len()计算列表的长度,并用range()函数生成一个可迭代对象,对象的元素代表列表的索引,对它进行迭代时,变量i就表示原列表的索引。因为其中的语句a[i]*=2改变了列表中的元素,所以此程序能够实现题目的目标。2.2.4异常处理异常处理机制用于捕获错误并做出相应的处理,从而提高程序的稳健性和容错能力,提升用户体验。Python提供了try-except结构来实现异常处理。将执行代码块放在try块中,如果在执行过程中发生异常,程序会跳到对应的except异常处理代码块进行处理。实例演示try:result=10/0except:print("除零错误")try:#执行代码块except:#异常处理代码块2.3函数2.3.1函数定义2.3.3模块与包的使用2.3.5文件操作2.3.2函数调用2.3.4第三方库的安装与使用2.3.1函数定义关键字:def要素:函数名、形式参数列表、函数体函数定义形式如下:实例演示defadd(a,b):s=a+breturns例如,以下代码定义一个函数add,此函数具有两个参数a和b,函数体计算两个参数的和,然后返回它们的和。def函数名([形式参数列表]):#函数体[return返回值]调用者调用函数add,输入两个参数,将得到它们的和。In:add(3,4)Out:72.3.1函数定义函数可以没有参数,称为无参函数。定义无参函数时,函数名后面的圆括号也不能省略。函数也可以没有返回值,这时可以不写return语句。实例演示defsayHello():print('Hello,everybody!')2.3.1函数定义Python函数可以返回多个值。定义函数时,将需要返回的多个值依次放在return后面,并以逗号分隔。实例演示defgetMinMax(alist):minValue=min(alist)maxValue=max(alist)returnminValue,maxValue以下函数接收一个列表参数,同时返回列表的最小值和最大值。2.3.1函数定义一个函数可以包含多个return语句,用于在不同的条件下返回不同的结果。return语句不仅用于返回函数的结果,还可以结束函数的执行。当函数执行到return语句时,函数会立即终止,并返回指定的值,因此,多个return语句不会相互干扰。实例演示defsort(a,b):ifa>=b:returna,belse:returnb,a以下代码定义的函数sort接收两个参数,并按照从大到小的顺序返回。2.3.2函数调用函数调用通过函数名和传递的参数进行。对于有参函数,需要给形式参数传递值,这些值称为实际参数,简称实参。调用时,程序会跳转到函数定义处执行函数体中的代码,完成后将结果返回到调用位置。函数调用的形式如下:位置参数实际参数是传递给有参函数形式参数的。实际参数与形式参数是按位置一一对应的,故称为位置参数。实例演示defadd(a,b):

s=a+b

returns以下代码定义的函数sort接收两个参数,并按照从大到小的顺序返回。函数名([实际参数列表])x=add(5,4)

#5、4分别传递给a、b不可变对象和可变对象不可变对象是指对象的值在创建后不能被改变的对象。一旦定义了一个不可变对象,其内部数据不能被修改。常见的不可变对象包括整数、浮点数、字符串和元组。不可改变对象作为实参时,在函数内部改变形参的值,不会导致实参的值发生改变。实例演示In:defmodify(x): x=x*x

#改变形参 print('x=',x)y=5modify(y)print('y=',y)Out:x=25y=5

#实参的值不发生改变变量y是一个不可改变对象,将它作为实际参数调用函数modify(),传递给形式参数x,函数内部将x修改为它的平方。函数调用结束后,输出变量y的值,没有发生改变。不可变对象不可变对象和可变对象可变对象是指对象的值可以在创建后被修改的对象。常见的可变对象包括列表、字典和集合。可变对象作为实参时,在函数内部改变形参的值,会导致实参的值发生改变。实例演示In:defmodifyList(b): foriinrange(len(b)): b[i]*=b[i]

#改变形参 print('b=',b)a=[4,5,6]modifyList(a)print('a=',a)Out:b=[16,25,36]a=[16,25,36]

#实参发生改变列表对象a是一个可改变对象,将它作为实际参数调用函数modifyList(),传递给形式参数b,函数内部将b的元素修改为它的平方。函数调用结束后,输出变量a的值,也发生了改变。可变对象2.3.2函数调用默认值参数默认值参数允许在函数定义时为某些参数指定默认值。这样,在调用函数时,如果未提供这些参数的值,函数将使用预设的默认值。给参数设置默认值的形式如下:当有的参数没有默认值,有的参数具有默认值时,要求默认值参数必须放在非默认值参数的后面。实例演示In:defdefault(x,y=3):

#默认值参数放在后面 s=x+y print('Sumofxandyis:',s)

为了降低复杂度,建议只使用不可改变对象作为参数的默认值。def函数名(…,形参名=默认值):

#函数体

[return返回值]In:default(2)

default(2,4)两次调用的结果是多少?请解释实参与形参的传递。2.3.2函数调用关键字参数在Python中,函数参数可以通过位置参数和关键字参数两种方式进行传递。按位置参数传递时,按照参数的位置,实际参数与形式参数从左到右一一对应。按关键字参数传递时,允许在函数调用时明确指定每个参数的名称和对应的值,实际参数与形式参数不需要遵循函数定义中的参数顺序,还可以跳过某些具有默认值的参数。实例演示In: defkeyParameter(x,y=3,z=4):

s=x+y+z

print('Sumofxandyis:',s)

keyParameter(z=3,y=2,x=1)#改变参数顺序

keyParameter(x=1,z=2)#跳过默认值参数Out:Sumofx,yandzis:6

Sumofx,yandzis:6

2.3.2函数调用变量的作用域变量的作用域指的是变量在程序中的可访问范围。作用域决定了变量在哪些地方可以被引用或修改。根据变量的定义位置,变量分为局部变量和全局变量。局部变量是在函数或代码块内部定义的变量。局部变量只能在该函数内部使用,函数执行结束后,这些变量就会被销毁,无法在函数外部访问。实例演示deflocalVar(a):b=0ifa>=0:c=1print(a,b,c)

下面函数中的形参变量a,函数内定义变量b,代码块内定义的变量c都是局部变量,在函数外部无法访问。2.3.2函数调用变量的作用域变量的作用域指的是变量在程序中的可访问范围。作用域决定了变量在哪些地方可以被引用或修改。根据变量的定义位置,变量分为局部变量和全局变量。局部变量是在函数或代码块内部定义的变量。局部变量只能在该函数内部使用,函数执行结束后,这些变量就会被销毁,无法在函数外部访问。全局变量是在函数外部定义的,它们的作用域从变量定义开始,一直持续到程序结束。实例演示deflocalVar(a):#形参变量a是局部变量b=0#函数内定义变量b是局部变量ifa>=0:c=1#代码块内定义的变量c是局部变量print(a,b,c)

变量a,b,c都是局部变量,在函数外部无法访问。变量x在函数globalVar()中可以使用。x=10#变量x是在函数外部定义,是全局变量defglobalVar():y=x*xprint('x={},y={}'.format(x,y))globalVar()实例演示#定义函数,计算偶数的平方和defsumSquaresEvens(numbers):sum_squares=sum(x**2forxinnumbersifx%2==0)returnsum_squares#调用函数并输出结果number_list=[1,2,3,4,5,6,7,8]result=sumSquaresEvens(number_list)print("所有偶数的平方和是:{}".format(result))【例2-10】编写一个函数,计算一个整数列表中的所有偶数的平方和。具体要求如下。定义一个函数sumSquaresEvens(numbers),该函数接收一个整数列表作为参数,计算并返回所有偶数的平方和。2.3.2函数调用lambda表达式lambda表达式是一种用于创建匿名函数的简洁方式。匿名函数是指没有名字的函数,通常用于定义简单的、短小的函数,而无须正式使用def关键字来声明函数。lambda表达式的格式如下:

形参列表对应函数的形参列表,表达式对应函数的函数体,表达式的值就是匿名函数的返回值。lambda表达式常常用作函数参数。实例演示【例2-11】随机产生一个长度为8的列表,取值范围为[-100,100],对该列表按元素平方值从小到大的顺序排序,输出原列表和排序后的列表。In: fromrandomimportrandintt=[randint(-100,100)foriinrange(8)]print('原列表:',t)t.sort(key=lambday:y*y)

#lambda表达式作参数print('排序后:',t)Out:原列表:[19,72,

温馨提示

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

最新文档

评论

0/150

提交评论