python程序设计及上机实验教程第2章Python语言基础_第1页
python程序设计及上机实验教程第2章Python语言基础_第2页
python程序设计及上机实验教程第2章Python语言基础_第3页
python程序设计及上机实验教程第2章Python语言基础_第4页
python程序设计及上机实验教程第2章Python语言基础_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

程序设计及上机实验PythonPython语言基础 第2章2.1Python程序概述2.2Python规范2.3数据类型2.4变量2.5表达式和运算符2.6基本输入输出2.7常用函数2.8案例实战2.9课后作业Python语言规范,包括语句规则、缩进规则、注释规则等Python保留字、内置函数、常用模块函数Python变量Python表达式和运算符Python输入输出语句本章重点Python中对象的概念字符串的算术运算符、逻辑运算符、成员运算符、身份运算符、位运算符和赋值运算符的应用本章难点Python程序概述2.12.1.1引例例2-1圆面积的计算(area.py)分析:圆的面积计算公式为:面积=πR2,代码如下importmathradius=20pi=math.pi

#通过体系标准库math的属性来获取π的值print(pi)area=pi*radius*radius

#圆的面积print(area)执行结果为:=========RESTART:J:/2-1.py==========3.1415926535897931256.6370614359173Python语言简介2.12.1.2Python程序的构成Python程序可以分解为模块、语句、表达式和对象。从概念上理解,其对应关系如下:(1)Python程序由模块组成,模块对应的扩展名为.py的源文件。一个Python程序由一个或者多个模块组成。例2-1程序由模块area.py和内置模块math组成。(2)模块有语句组成。模块即Python源文件,在运行Python程序时按顺序依次执行模块中的语句。在例2-1程序中,importmath为导入模块语句;print(area)为调用函数表达式语句;其余的为赋值语句。Python语言简介2.12.1.2Python程序的构成(3)语句是Python程序的过程构造块,用于创建对象、变量赋值、调用函数、控制分支、创建循环、增加注释等。语句包含表达式。在例2-1中,语句importmath用来导入math模块,并依次执行其中的语句;在语句radius=20中,字面20创建一个值为20的int型对象,并绑定到变量radius;在语句area=pi*radius*radius中,算术表达式pi*radius*radius的运算结果为一个新的int型对象,并绑定到变量area;#引导注释语句;在语句print(area)中,调用内置函数print(),输出对象area的值。(4)表达式用于创建和处理对象。在例2-1程序的语句area=pi*radius*radius中,表达式pi*radius*radius的运算结果为一个新的float型对象,math.pi调用模块math中的pi属性来获取π的值,并参与运算。Python规范2.22.2.1.物理行和逻辑行

Python程序由若干逻辑行组成。物理行是在编写程序时所看见的,而逻辑行是Python解释器看见的单行语句。一个逻辑行可以包含多个物理行。Python中语句不能跨逻辑行。在遇到较长的语句时,可以使用语句续行符号,将一条语句写在多行之中,这时一个逻辑行就包含多个物理行。、Python中有两种续行方式,一种是使用“\”符号,应注意在“\”符号后不能有任何其他符号,包括空格和注释。另外一种特殊的续行方式是在使用括号(包括()、[]和{})时,括号中的内容可以分成多行书写,括号中的空白和换行符都会被忽略,通常使用空白行来分隔不同的函数和类。Python规范2.22.2.2语句规则1.Python语句语句是Python程序的过程构造块,用于定义函数、定义类、创建对象、变量赋值、调用函数、控制分支、创建循环等。Python语句分为简单语句和复合语句。简单语句包括表达式语句、赋值语句、assert语句、pass语句、del语句、return语句、yield语句、raise语句、break语句、continue语句、import语句、golbal语句、nonlocal语句等。复合语句包括if语句、while语句、for语句、try语句、with语句、函数定义、类定义等。Python规范2.22.Python语句的书写规则Python语句的书写规则如下:(1)使用换行符分隔,在一般情况下一行一条语句;(2)从第一列开始,前面不能有任何空格,否则会产生语法错误,但是注释语句可以从任意位置开始,复合语句构造体必须缩进。(3)反斜杠(\)用于一个代码跨域多行的情况。如果语句太长,可以使用续行符(\)。三引号定义的字符串、元组、列表、字典可以放在多行,而不必使用续行符(\),因为他们可以清晰地表示定义的开始和结束。例如:>>>print("如果语句太长,可以使用(\),\续行内容。")(4)分号(;)用于在一行书写多条语句。例如:>>>a=0;b=0;c=0>>>s="abc";print(s)Python规范2.23.复合语句及其缩进书写规则由多行代码组成的语句称为复合语句。复合语句由头部语句和构造体语句块组成。构造体语句块由一条或者多条语句组成。复合语句和构造体语句块的缩进书写规则如下:>>>sum=0>>>foriinrange(1,11):

sum=sum+i

print(i,end="")12345678910

#输出12345678910>>>print(sum)55

#输出55(1)头部语句由相应的关键字开始,构造体语句块则为下一行开始的一行或多行缩进代码。例如:Python规范2.2(2)通常缩进都是相对头部语句缩进2-4个空格,也可以是任意空格,但是同一构造体代码块的多条语句缩进的空格必须一致。如果语句不缩进,或缩进不一致,将导致编译错误。Python是强制缩进的,以保证源代码的规范性和可读性。>>>foriinrange(1,11):print(i,end="")(3)如何条件语句、循环语句、函数语句和类定义比较短,可以放在同一行。例如:Python规范2.24.注释语句Python的注释语句以符号“#”开始,到行末结束。Python注释语句可以出现在任何位置。Python解释器将忽略所有的注释语句,注释语句不会影响程序的执行结果。良好的注释可以帮助用户阅读和理解程序。在后面一小节中我们还要进一步探讨注释。5.空语句如果要表示一个空的代码块,可以使用pass语句,其主要在定义一个空函数的时候用到。Python规范2.2例2-2定义一个打印信息的空函数。分析:空函数一般用于快速的定义一个没有任何功能的函数,该函数只具有一个格式,通常用于在主程序中需要把程序功能分成若干个模块,每个模块不能及时完成时,为了保持主程序能正常运行,就可以先定义一些空函数,代码如下:defprint_infomation():passPython规范2.22.2.3代码缩进Python和其他编程语言(如C和Java)很不一样的地方在于,Python采用代码缩进和冒号来区分代码之间的层次。而C和Java则采用大括号来分割代码块。如果我们有其他语言(如C和Java)的编程经验,那么Python的强制缩进一开始会让我们很不习惯。但是,如果习惯了Python的缩进语法,就会觉得它的结构非常清晰和优美。缩进可以使用空格或者Tab键来实现,建议用空格来实现。当使用空格实现缩进时,建议用2个或者4个空格作为一个缩进量,本书的代码基本都是采用4个空格的缩进量。Python规范2.22.2.3代码缩进例2-3

Python的缩进语法,已知一个矩形的长和宽,计算该矩形的面积,如果该面积大于15,则输出文字“这是一个大矩形”。分析:矩形的面积=长×宽,当判断面积是否大于15时需要用到if语句,里面的子语句就要使用缩进,具体代码如下:length=10width=20area=length*widthifarea>15:print("这是一个大矩形")Python规范2.22.2.4注释规则为代码添加注释是一个良好的编程习惯,因为添加注释有利于代码的维护和阅读。在Python中,通常有3种类型的注释,分别是单行注释、多行注释和编码规则注释。1.单行注释Python中使用“#”表示单行注释。单行注释可以作为单独的一行放在被注释代码行之上,也可以放在语句或表达式之后。Python规范2.2例2-4单行注释作为单独的一行放在被注释代码行之上。已知球的半径,计算球的表面积。分析:球的表面积=4πr2,程序代码如下:#定义一个变量pi用来表示圆周率π的值pi=3.14#定义一个变量r用来表示球的半径r=4#使用球的表公式求出球的表面积area=4*pi*r*rprint("球的表面积为:",area)=======RESTART:J:/2-4.py=======球的表面积为:200.96运行结果为:Python规范2.2例2-5单行注释放在语句或表达式之后,将上面的注释部分改在表达式之后,则代码变为:pi=3.14#定义一个变量pi用来表示圆周率π的值r=4#定义一个变量r用来表示球的半径area=4*pi*r*r#使用球的表公式求出球的表面积print("球的表面积为:",area)Python规范2.22.多行注释当注释内容过多,导致一行无法显示时,就可以使用多行注释。Python中使用三个单引号或者三个双引号表示多行注释。Python规范2.2例2-6使用三个单引号的多行注释,将2-5的例子继续添加注释,在注释里说明该程序的名字、创建日期、创建人、程序的用途等,代码如下:'''文件名:2-5.py用途:用于求解球的表面积创建日期:2022年10月26日创建人:YW'''pi=3.14#定义一个变量pi用来表示圆周率π的值r=4#定义一个变量r用来表示球的半径area=4*pi*r*r#使用球的表公式求出球的表面积print("球的表面积为:",area)Python规范2.2例2-7使用三个双引号的多行注释,将2-6的多行注释部分改成三个双引号的注释,代码如下:"""文件名:2-5.py用途:用于求解球的表面积创建日期:2022年10月26日创建人:YW"""pi=3.14#定义一个变量pi用来表示圆周率π的值r=4#定义一个变量r用来表示球的半径area=4*pi*r*r#使用球的表公式求出球的表面积print("球的表面积为:",area)Python规范2.23.编码规则注释编码规则注释主要是为了解决Python2.x中不支持直接写中文的问题,虽然该问题在Python3.x中已经不存在,但是,为了方便他人了解代码文件所使用的编码,建议在文件开始位置加上编码注释规则。Python规范2.2例2-8在例2-7程序的文件开始位置添加编码规则注释。#-*-coding:utf-8-*-"""文件名:2-5.py用途:用于求解球的表面积创建日期:2022年10月26日创建人:YW"""pi=3.14#定义一个变量pi用来表示圆周率π的值r=4#定义一个变量r用来表示球的半径area=4*pi*r*r#使用球的表公式求出球的表面积print("球的表面积为:",area)Python规范2.22.2.5标识符及其命名规则Python语句中的类名、对象名、方法名和变量名等,统称为标识符1.标准命名规则为了提高程序的可读性,在定义标识符时,要尽量遵循见其名知其意的原则Python标识符的具体命名规则如下:(1)一个标识符可以由几个单词连接而成,以表明他们的意思。(2)建议使用有意义的名字作为标识符,能够体现其用途。(3)标识符由一个或多个字母、数字、下划线(_)构成,并且第一个字符不能是数字,换句话说标识符的第一个字符必须是字母或者下划线。(4)标识符没有长度限制,建议标识符不宜太长,否则不利于程序的编写。(5)标识符不能是关键字。(6)标识符中的字母是严格区分大小写的。(7)标识符不能包含空格、@、%和$等特殊符号。(8)应该避免标识符的开头和结尾都使用下划线的情况,因为Python中大量采用这种名字定义了各种特殊方法和变量。Python规范2.2例2-11判断以下哪些标识符的定义是合法的,哪些是非法定义?a_int、student、teacher1、func2、_a、_a5、_、4dean、for、$book、@qq合法:a_int、student、teacher1、func2、_a、_a5、_非法:4dean、for、$book、@qqPython规范2.22.不合理命名规则不合理命名规则指定义的标识符系统不会报错,但是在实际使用时会产生歧义或存在重大隐患的标识符命名,具体包括以下两种类型:(1)使用系统内置的模块名、类型名或函数名,以及已导入的模块名及其成员名作为变量名,在程序运行时不会报错,但这将会改变原有的类型和含义,一旦定义成这些名字后,就不能继续保留其原有特性了,在使用过程中可以通过dir(__builtins__)语句查看所有内置模块、类型和函数。Python规范2.2例2-9定义标识符时为了避免与系统内置的变量和函数重名,请编写代码查看系统内置的变量和函数,并统计一下当前Python版本中共包含多少个内置变量和函数?importbuiltinsprint("Pyhon的内置变量和函数为:")print(dir(builtins))print("当前Pyhon版本的内置变量和函数共有",len(dir(builtins)),"个")分析:要查看系统内置的变量及函数,除了可以使用上面的dir(__builtins__)语句外,我们还可以导入builtins模块,builtins是Python中的一个内置模块,该模块提供对Python的所有“内置”标识符的直接访问,dir()是Python的一个内置函数,主要用来返回对应模块的所有方法及属性,代码如下:Python规范2.2(2)定义以下划线开始或者结束的标识符时,需要谨慎使用。下划线在定义类的特殊成员时有其特殊的含义,一般情况如下:__*__(双下划线)表示系统定义的特殊成员,如__name__;_*(单下划线)表示类的保护成员,不能使用“frommoduleimport*”导入,只有类对象和子类对象才能访问这些成员;__*(双下划线)表示类的私有成员,只有类对象自己能够访问。Python规范2.23.标识符命名习惯下面介绍一些常用的命名规则。(1)变量名、常量名很多开发人员对变量名的命名很随意,常用j、i、k等单个字母命名,可读性差。变量名的命名也有一定的规范,变量名应全部小写,用下划线连接各个单词,比如:school_name。私有类成员变量使用单一下划线前缀标识,如:_name。常量名的所有字母都要大写,可用下划线连接各个单词,如:MAX_OVERFLOW、TOTAL。(2)函数名函数名通常小写,可以用下划线或单词首字母大写增加可读性,导入的函数以模块名为前缀。如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线。如:myfunction可写作my_example_function。Python规范2.2(3)类名、对象名、属性名、方法名类名首字母要大写,私有类可用一个下划线开头,其他字母小写。对象名全采用小写字母。类的属性和方法名以对象作为前缀,对象通过“.”访问属性和方法。方法名首字母小写,其他单词首字母大写,使用“self”作为实例方法的第一个参数。具体参考实例如下:classStudent:#类名Student首字母大写...def__init__(self,name):#使用“self”作为实例方法的第一个参数...defgetName(def):#方法名getName首字母小写,其他单词首字母大写...student=Student("delphi")#对象名student小写printstudent.getName()#对象通过“.”访问方法Python规范2.2(4)包名、模块名包名和模块名应简短,尽量使用小写命名,不要用下划线,如果词量大可以加入下划线增强可读性,如“mymodule”这样的命名就是允许的,而“Mymodule”这样的命名方式则不推荐。Python规范2.22.2.6关键字关键字即预定义保留标识符,在Python语言中定义了一些专有词汇,统称为关键字,他们都有特定的含义,只能用于特定的位置,表2-1列出了Python语言中的所有关键字及其说明。Python规范2.2序号保留字说

明1False假2None空3True真4and用于表达式运算,逻辑与操作5as用于类型转换6assert断言,用于判断变量或条件表达式的值是否为真7async用来声明一个函数为异步函数8await用来声明程序挂起9break中断循环语句的执行10class用于定义类11continue继续执行下一次循环12def用于定义函数或方法13del删除变量或者序列的值14elif条件语句,与ifelse结合使用15else条件语句,与if、elif结合使用,也可以用于异常和循环16except包括捕获异常后的操作代码,与try、finally结合使用17for循环语句18finally用于异常语句,出现异常后,始终要执行finally包含的代码块。与try、except结合使用19from用于导入模块,与import结合使用20global定义全局变量21if条件语句,与else、elif结合使用22import用于导入模块,与from结合使用23in判断变量是否存在于序列中24is判断变量是否为某个类的实例25lambda定义匿名函数26not用于表达式运算,逻辑非操作27nonlocal在函数或者其他作用域中使用外层(非全局)变量28or用于表达式运算,逻辑或操作29pass空的类、函数、方法的占位符30raise异常抛出操作31return用于从函数返回计算结果32try包含可能会出现异常的语句,与except、finally结合使用33while循环语句34with简化Python的语句35yield用于从函数依次返回值Python规范2.2例2-10写出查找python中的关键字的程序importkeywordprint(keyword.kwlist)分析:keyword是python中的一个标准库,主要用来判断和输出系统关键字,不用pip下载安装直接就可以使用,导入该库,然后使用该库中的属性kwlist就可以显示系统关键字['False','None','True','and','as','assert','async','await','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']程序代码如下:运行结果如下:Python规范2.2(3)类名、对象名、属性名、方法名类名首字母要大写,私有类可用一个下划线开头,其他字母小写。对象名全采用小写字母。类的属性和方法名以对象作为前缀,对象通过“.”访问属性和方法。方法名首字母小写,其他单词首字母大写,使用“self”作为实例方法的第一个参数。具体参考实例如下:classStudent:#类名Student首字母大写...def__init__(self,name):#使用“self”作为实例方法的第一个参数...defgetName(def):#方法名getName首字母小写,其他单词首字母大写...student=Student("delphi")#对象名student小写printstudent.getName()#对象通过“.”访问方法数据类型2.3计算机程序通常用于处理各种类型的数据,不同的数据属于不同的数据类型,支持不同的运算操作。Python3.x中有6个标准的数据类型,分别是数字、字符串、列表、元组、字典和集合。这6个标准的数据类型又可以进一步划分为基本数据类型和组合数据类型,如表2-2所示,其中数字和字符串都是基本数据类型,这两个数据类型将放在第3章和第4章介绍;列表、元组、字典和集合是组合数据类型,将放在第5章讲。数据类型2.3数据类型分类数据类型中文名称数据类型英文名称示例基本数据类型数字整数int123浮点数float3.1415复数complex2+3.4j布尔数boolTrue、False字符串str'hello','12',"语文"组合数据类型列表list[1,3,5,7,100]元组tuple(2,4,8,12)字典dict{'name':"lucky","age":10,"sex":"男"}集合set{"b","a","c"}Python3.x中的6个标准数据类型在以上的6个标准数据类型中,根据数据的可变性,又可将他们分为不可变数据类型和可变数据类型,其中数字(整数、浮点数、复数、布尔数)、字符串和元组是属于不可变数据类型;列表、字典和集合属于可变数据类型。变量2.42.4.1对象对象是Python语言中最基本的概念,在Python中处理的一切都是对象。在Python程序设计中,所有的数据均表示为对象。对象本质上是一个内存,拥有特定的值,支持特定的运算操作。变量2.42.4.1对象对象是对数据的抽象,Python中所有的数据都被表示成对象,或者对象之间的关系,所有的数据以对象的形式存在。每个对象在创建时都对应着一个数据类型,比如一串字符、一个数字或者一个集合都是对应着相应数据类型的一个对象,如"helloworld"、2、42.56、{1,2,3}等,这些对象属于不同的类型,"helloworld"是一个字符串对象,2是一个整数对象,42.56是一个浮点数对象,{1,2,3}是集合对象。每个对象都有一个标识(identity)、类型(type)和值(value),可以通过Python内置函数type()来获取对象的类型,id()函数获取对象的id标识(即对象的内存地址)。Python规范2.2例2-11请启用IDLE(Python3.764-bit)的shell窗口,并在解释窗口中查看整数10、浮点数3.157、字符串"你好Python"、列表[1,2,3]、元组(10,20)、字典{'name':"lucky","age":10,"sex":"男"}、集合{4,5,6}的类型和id标识。>>>id(10)8790962897456#输出值,表示整数类型对象10的id标识为

8790962897456>>>id(3.157)47141200>>>id("你好Pyhon")51299216>>>id([1,2,3])52302920>>>id((10,20))52312840

#输出值,表示元组类型对象(10,20)的id标识为52312840>>>id({'name':"lucky","age":10,"sex":"男"})52360520>>>id({4,5,6})51401448Python规范2.2>>>type(10)<class'int'>

#整数类型对象10的type类型为int>>>type(3.157)<class'float'>

#浮点数类型对象3.157的type类型为float>>>type("你好Pyhon")<class'str'>

#字符串类型对象"你好Pyhon"的type类型为str>>>type([1,2,3])<class'list'>

#列表类型对象[1,2,3]的type类型为list>>>type((10,20))<class'tuple'>

#元组类型对象(10,20)的type类型为tuple>>>type({'name':"lucky","age":10,"sex":"男"})<class'dict'>

#字典类型对象{'name':"lucky","age":10,"sex":"男"}的type类型为dict>>>type({4,5,6})<class'set'>

#集合类型对象{4,5,6}的type类型为set变量2.42.4.2变量的创建Python对象是位于计算机内存中的一个内存数据块,为了引用对象,用户必须通过赋值语句把对象赋值给变量(也称之为把对象绑定到变量),指向对象的引用即变量。对象通常存放在变量中,变量是指向某个对象的名字,是对象的命名。变量的命名需要遵循相应的规则,2.2.5节中已经介绍过变量的命名规则。变量的声明和赋值用于把一个变量绑定到某个对象,其语法格式如下:变量名=字面量或表达式变量只有被创建或者赋值后才能使用,变量赋值使用等号(=),等号左边是一个变量名,等号右边是某个数据对象的值或者表达式。例2-12变量的声明和赋值示例>>>a=2#变量a指向int类型对象2>>>b="Python”#变量b指向值为"Python”

的str型实例对象>>>姓名="小明"#变量姓名指向str类型对象"小明”>>>x=y=z=1>>>id(x)2070755584#变量x的id标识为2070755584>>>id(y)2070755584#与变量x、z都是同一个id标识>>>id(z)2070755584>>>type(a)<class'int'>>>>type(b)<class'str'>>>>type(x)<class'int'>>>>a="我要好好学Pyhon">>>type(a)<class'str'>变量2.4变量2.4代码分析如下:赋值语句a=2的执行过程如下:(1)创建表示整数2的对象。(2)检查变量a是否存在,如果不存在则创建它,如果存在则直接使用。(3)建立变量a到对象2之间的引用。b="Python”语句与第一条赋值语句差不多,区别是b变量指向的对象是一个字符串。姓名="小明",该条语句执行时并不会报错,在Python3中,允许变量名是中文字符,但是在实际编程中不建议使用中文字符作为变量名。x=y=z=1,该条语句是链式赋值语句,其执行过程如下:(1)创建整数对象1。(2)创建变量x、y、z。(3)建立变量x、y、z到对象1之间的引用。这时如果我们用id()函数来查看x、y、z变量的id标识可以发现,他们都是指向同一内存地址。变量2.4Python中的变量不同于C、C++、Java等语言中的变量,不需要事先声明变量的类型,直接赋值即可创建各种类型的变量,解释器会根据所赋值的类型自动推断变量类型。变量的类型由他所指向的对象决定,如果指向的是一个整数对象,则一般称该变量为整形变量,如果该变量指向的是一个字符串类型,则该称该变量为字符串变量。通过type()函数可以返回一个变量的类型。type(a)语句表示返回变量a的数据类型,其返回结果为<class'int'>,表明a变量是一个整数类型。type(b)返回结果为<class'str'>,表明b变量是一个字符串类型变量。变量2.4Python是一种动态类型语言,变量的类型是可以随时变化的,a="我要好好学Pyhon",表明重新将a变量指向字符串对象"我要好好学Pyhon",这时a的值就不再是2,而是变成"我要好好学Pyhon",变量的数据类型也不再是int类型,而是str类型。Python中使用变量时要理解下面几点:(1)变量在第1次赋值时被创建,再次出现时直接使用。(2)变量引用了对象。当在表达式中使用变量时,变量被其引用的对象替代。(3)变量在使用前,必须赋初值。(4)Python具有内存自动管理功能,对于不再使用的变量,我们可以通过del语句删除,如果一个变量不再使用也没有用del删除,则系统将自动管理,自动消除。例2-13变量的声明和赋值。李国今年16岁,身高174.5cm,是党员。请声明一个变量liguo_name用来保存李国的姓名;声明一个变量liguo_age用来保存李国的年龄信息;声明一个变量liguo_height用来保存李国的身高信息;声明一个变量liguo_party_member用来保存李国是否是党员;声明一个变量liguo_describe用来保存一段文字,文字内容是:我的名字叫李国,我今年16岁,身高174.5cm。声明以上变量后输出。变量2.4liguo_name="李国"liguo_age=16liguo_height=174.5liguo_party_member=Trueliguo_describe="我的名字叫李国,我今年16岁,身高174.5cm"print(liguo_name)print(liguo_age)print(liguo_height)print(liguo_party_member)print(liguo_describe)变量的声明和赋值代码如下:运行结果如下:李国16174.5True我的名字叫李国,我今年16岁,身高174.5cm变量2.4变量2.42.4.3变量的删除Python具有自动内存管理功能,会跟踪所有的变量,并自动删除不再有指向值的变量。因此,Python程序员一般情况下不需要太多地考虑内存的管理问题。通过显式使用del命令,可以删除不需要的变量,或者显式关闭不再需要访问的资源。变量2.4例2-14变量的删除代码示例,定义一个变量a并赋值,然后删除该变量,最后来输出该变量看一下结果。>>>a=10>>>dela#删除变量a>>>print(a)NameError:name’a’

isnotdefind#变量被删除,输出时提示错误,该变量没有被定义

表达式和运算符2.52.5.1表达式的组成表达式是将一系列的运算对象用运算符联系在一起构成的一个式子,该式子经过运算以后有一个确定的值。表达式是可以计算的代码片段,由操作数和运算符构成。操作数、运算符和圆括号按一定的规则组成表达式。表达式通过运算后产生运算结果,返回结果对象。运算结果对象的类型由操作数和运算符共同决定。表达式既可以非常简单,也可以非常复杂。当表达式包含多个运算符时,运算符的优先级控制各个运算符的计算顺序。

表达式和运算符2.52.5.2表达式的书写规则Python表达式遵循下列书写规则:(1)表达式从左到右在同一个基准上书写。(2)乘号不能省略。(3)括号必须成对出现,而且只能使用圆括号;圆括号可以嵌套使用。importmatha=10b=30x=12y=math.sin(a*(x+1)+b)/2#1/2sin⁡[a(x+1)+b]对应的表达式为 math.sin(a*(x+1)+b)/2print(y)例2-15表达式示例,将数学表达式转换成Python语句表达式。分析:math库里包含了正玄sin的求解,但是在使用该函数之前需要先导入该库,代码如下:运算结果为:0.10971262918950236

表达式和运算符2.5

表达式和运算符2.52.5.3运算符概述运算符是对操作数进行运算的符号。Python运算符用于在表达式中对一个或多个操作数进行计算并返回结果值,接受一个操作数的运算符被称作一元运算符,例如正负号运算符+或者-;接受两个操作数的运算符被称作二元运算符,例如算数运算符+、-、*、/等。Python中的支持的运算符类型包括:算术运算符、比较(关系)运算符、逻辑运算符、赋值运算符、位运算符、成员运算符、身份运算符。Python中的运算符是有优先顺序的,在一个表达式中,Python会根据运算符的优先级从低到高进行运算。运算符说明(expressions,…)、[expressions,…]、{key:value,…}、{expressions,…}元组、列表、字典、集合元组、列表、字典、集合x[index]、x[start:end:step]、x(arguments,…)、x.attribute下标、切片、函数调用、属性引用下标、切片、函数调用、属性引用**幂运算+x、-x、~x正数、负数、按位取反*、@、/、//、%乘法、矩阵乘、除法、整除、取余+、-加、减<<、>>左移、右移左移、右移&按位与^按位异或|按位或in、notin、is、isnot、<、<=、>、>=、!=、==成员、身份、比较not逻辑非and逻辑与or逻辑或if---else条件表达式lambdaLambda表达式运算符的优先级如表所示,优先级由上到下依次递减,同一级的按照结合性从左到右顺序(除了幂运算是从右向左)。

表达式和运算符2.52.5.4算术运算符Python提供了丰富的算术运算符,用于进行包括四则运算的各种算术运算,算术运算符主要用于数字的处理。算术运算符用于对操作数进行算术运算运算符含义说明优先级举例结果**乘幂操作数的乘幂12**38+一元+操作数的值2+88-一元-操作数的反数2-8-8*乘法操作数的积32*36/除法第一个操作数除以第二个操作数35/22.5//求整商两个数相除,结果为整数部分(向下取整)34//31%模数两个数相除后的余数35%21+加法两个操作数之和42+35-减法第一个操作数减去第二个操作数的差410-37Python中的算术运算符及优先级a=35b=10c=0c=-aprint("1求相反数运算演示:a=35,b=10,c=-a的结果为",c)c=a+bprint("2加法运算演示:a=35,b=10,a+b的结果为",c)c=a-bprint("3减法运算演示:a=35,b=10,a-b的结果为",c)c=a*bprint("4乘法运算演示:a=35,b=10,a*b的结果为",c)c=a/bprint("5除法运算演示:a=35,b=10,a/b的结果为",c)c=a//bprint("6整除运算演示:a=35,b=10,a//b的结果为",c)c=a%bprint("7求余数运算演示:a=35,b=10,a%b的结果为",c)c=a**bprint("8幂运算演示:a=35,b=10,a**b的结果为",c)例2-16:Python的加、减、乘、除、整除、求余数、求幂运算示例。定义三个变量a,b,c,分别给他们赋一个初始值,然后运用算术运算符进行计算,最后查看计算结果。

表达式和运算符2.5======RESTART:J:/2-16.py======1求相反数运算演示:a=35,b=10,c=-a的结果为-352加法运算演示:a=35,b=10,a+b的结果为453减法运算演示:a=35,b=10,a-b的结果为254乘法运算演示:a=35,b=10,a*b的结果为3505除法运算演示:a=35,b=10,a/b的结果为3.56整除运算演示:a=35,b=10,a//b的结果为37求余数运算演示:a=35,b=10,a%b的结果为58幂运算演示:a=35,b=10,a**b的结果为2758547353515625运行结果如下:

表达式和运算符2.5例2-17:李国出生于2002年,计算他在2022年的年龄。首先定义一个变量用来存储李国的出生年份,接着定义一个变量用来存储2022年,最后定义一个变量用来存储李国现在的岁数,然后通过算术运算符“-”来求出结果。liguo_born=2002now=2022liguo_age=now-liguo_bornprint("李国现在的岁数是:",liguo_age)运行结果为:李国现在的岁数是:20注意:Python不支持C语言中的自增(++)和自减(--),Python会将--n解释为-(-n),也就是n,同样将++n解释成+(+n)从而得到n。

表达式和运算符2.5

表达式和运算符2.52.5.5比较(关系)运算符比较运算符也称为关系运算符,主要用于比较大小,运算结果为布尔型。当关系表达式成立时,运算结果为True,当关系表达式联成立时,运算结果为False。关系运算符包括>、>=、<、<=、!=、==,其具体描述如表2-5所示。比较运算符比较两个操作数的大小并返回一个布尔值(True、False),操作数可以是数字和字符串。比较时遵从以下规则:(1)比较(关系)运算符在优先级相同。(2)对于两个预定义在数值类型,关系运算符按照操作数的数值大小进行比较。(3)对于字符串类型,关系运算符比较字符串的值,即按字符在ASCII码值从左到右一一比较;首先比较两个字符串的第一个字符,其ASCII码值大的字符串大,若第一个字符相等,则继续比较第二个字符,依此类推,直到出现不同的字符为止。

表达式和运算符2.5运算符表达式描述实例结果>x>y大于,返回x是否大于y“ABC”>”ABD”False>=x>=y大于等于,返回x是否大于或等于y175>=75True<x<y小于,返回x是否小于y“ABC”<”北京”True<=x<=y小于等于,返回x是否小于等于y“123”<=”23”True==x==y等于,比较对象是否相等“PYTHON”==”python”False!=x!=y不等于,比较两个对象是否不相等“HELLOWORLD”!=”WORLD”True表2-5比较(关系)运算符例2-18

由用户输入年龄,如果年龄>=20,说:你应该承担一定责任啦,如果年龄<20,说:要好好学习哦。分析,这是一个根据比较结果返回不同反馈的例子

表达式和运算符2.5age=int(input("请输入你的年龄:"))ifage>=20:print("你应该承担一定责任啦")ifage<20:print("要好好学习哦")运行结果为:

请输入你的年龄:40

你应该承担一定责任啦Python语言支持链式关系表达式,相当于多个表达式之间逻辑“与”的关系。>>>1<=2<=3#等价于1<=2and2<=3True>>>2>=1>10#等价于2>=1and1>10False

表达式和运算符2.5

表达式和运算符2.52.5.6逻辑运算符逻辑运算符即布尔运算符,用于检测两个以上条件的情况,即多个bool值的逻辑运算,其结果为bool类型值。逻辑运算符用来对布尔值进行运算,运算结果是布尔值(True或False)。Python中的逻辑运算符包括not(非)、and(与)和or(或),如表2-6所示。运算符表达式描述优先级实例结果notnotx逻辑非,当操作数为False时返回True,当操作数为True时,返回False1notTruenotFalseFalseTrueandxandy逻辑与,当两个操作数均为True时结果才为True,否则为False2TrueandTrueTrueandFalseFalseandTrueFalseandFalseTrueFalseFalseFalseorxory逻辑或,当两个操作数中有一个为True时结果即为True,否则为False3TrueorTrueTrueorFalseFalseorTrueFalseorFalseTrueTrueTrueFalse表2-6逻辑运算符在逻辑运算符中,“非”是单目运算符,逻辑“与”和“或”为双目运算符。例2-20

定义一个变量x,其值为7*4,输出x的值是否大于10并且小于20。x=7*3print(x>10andx<20)False

表达式和运算符2.5chinese=int(input("请输入语文成绩:"))math=int(input("请输入数学成绩:"))ifchinese==100ormath==100:print("你获得奖学金啦!")else:print("没有奖学金!")例2-21

期末考试的时候,语文考100分或者数学考100分,获得奖学金。请输入语文成绩:100请输入数学成绩:95你获得奖学金啦!

表达式和运算符2.5注意:and和or运算符不一定总是生成布尔值True和False。>>>not0True>>>not1False>>>not"a"False(1)Python中的任意表达式都可以被评价为布尔逻辑值,故均可参与逻辑运算,例如:

表达式和运算符2.5注意:and和or运算符不一定总是生成布尔值True和False。>>>1or21>>>5or25>>>"a"or2'a'>>>Trueor"abc"True>>>""or"abc"'abc'>>>0or22>>>TrueorFalseTrue>>>FalseorTrueTrue(2)C=AorB。如果A不为0,或者不为空,或者为True,则返回A,否则返回B。即如果A不为0,或者不为空,或者为True时,则不用计算B,也就是“短路”计算。例如:

表达式和运算符2.5注意:and和or运算符不一定总是生成布尔值True和False。>>>1and22>>>5and22>>>'a'and55>>>0and20>>>""and8''>>>0and"abc"0>>>""and"abc"''>>>Falseand2False>>>Trueand22(3)C=AandB。如果A为0,或者为空,或者为False,则返回A,否则返回B。即如果A为0,或者为空,或者为False,则不用计算B,也就是“短路”计算。例如:

表达式和运算符2.5

表达式和运算符2.52.5.7成员运算符成员运算符用于查找对象是否在列表、元组、字符串、集合和字典等序列数据中,如果序列数据中包含查找的对象则返回True,否则返回False,成员运算符包括in和notin,如表2-7所示。表2-7成员运算符运算符表达式描述实例结果inxinyX是y的成员“e”in“hello”TruenotinxnotinyX不是y的成员1notin(1,2,3)False例2-22判断字母’h’是否在字符串"Helllopython"中。print('h'in"Hellopython")True

表达式和运算符2.5

表达式和运算符2.52.5.8身份运算符身份运算符用于比较两个对象的内存位置是否相同,如果两个对象的存储地址相同,则他们的id值就相同,则返回True,否则返回False,身份运算符包括is和isnot,如表2-8所示。表2-8身份运算符运算符表达式描述实例结果isxisyx和y是同一个对象x=y=1;xisyx=1;y=2;xisyTrueFalseisnotxisnotyx和y不是同一个对象x=1;y=2;xisnotyTrue如果xisy的结果为True,则表示id(x)==id(y),即x对象的内存id与y对象的内存id相同。例2-23将a、b两个变量分别赋值10和15,使用身份运算符比较他们。a=10b=15print(aisb)print(bisa)print(id(a))print(id(b))FalseFalse87914260403688791426040528

表达式和运算符2.5

表达式和运算符2.52.5.9位运算符位运算符只能用于整型数据,位运算符将数字转换成二进制数来进行运算。Python中的位运算符包括~、<<、>>、&、^、|,如表2-9所示。表2-9位运算符运算符用法含义优先级~~op按位取反1<<op1<<op2将op1左移op2位2>>op1>>op2将op1右移op2位2&op1&op2按位逻辑与3^op1^op2按位逻辑异或4|op1|op2按位逻辑或5

表达式和运算符2.52.5.9位运算符位运算的执行过程为:首先将整数转换为二进制数,然后右对齐,必要时左侧补0,按位进行运算,最后再把计算结果转化为十进制数字返回。位与运算规则为:1&1=1,1&0=0,0&1=0,0&0=0位或运算规则为:1|1=1,1|0=1,0|1=1,0|0=0位异或运算规则为:1^1=0,0^0=0,1^0=1,0^1=1<<左移时右侧补0,每左移一位相当于乘以2>>右移时左侧补0,每右移一位相当于除以2例2-24

定义变量a、b,分别给他们赋值为2和10,分别对他们进行位运算符操作,写出计算过程,观察他们的运行结果。分析如下:在执行的过程中,先将十进制数2和10分别转换为二进制补码,分别为a=00000010,b=00001010,~a=11111101,该数是一个补码,最高位为1,则说明该数是一个负数,将该补码还原为十进制即为-3;~b=11110101,该数也是一个补码,将该数还原为十进制即为-11;a&b=00000010,转换为十进制后即为2;a|b=00001010,转换为十进制后即为10;a^b=00001000,转换为十进制后即为8;b<<a,即将00001010左移2位,结果为00101000,转换为十进制即为40;b>>a,即将00001010右移2位,结果为00000010,转换为十进制即为2

表达式和运算符2.5代码为:a=2b=10print("~a=",~a)print("~b=",~b)print("a&b=",a&b)print("a|b=",a|b)print("a^b=",a^b)print("b<<a=",b<<a)print("b>>a=",b>>a)========RESTART:J:/2-25.py========~a=-3~b=-11a&b=2a|b=10a^b=8b<<a=40b>>a=2

表达式和运算符2.5

表达式和运算符2.52.5.10赋值运算符赋值运算符主要用来为变量赋值。赋值运算符的功能是将右侧表达式的值赋值给左侧的变量,因此赋值运算符(=)并不是数学中在等于符号。赋值运算符分为简单赋值运算符和复合赋值运算符。简单赋值运算符是指“=”,而复合赋值运算符是指算术运算符、位运算符中的运算符后面再加上“=”,表2-10列出了Python中的赋值运算符。

表达式和运算符2.5运算符含义举例等效于=赋值运算符x=2

+=加法赋值,字符串拼接sum+=iastr+=”python”sum=sum+iastr=astr+”python”-=减法赋值count-=1count=count-1*=乘法赋值x*=y+5x=x*(y+5)/=除法赋值x/=y-zx=x/(y-z)//=整除赋值x//=y-zx=x//(y-z)%=取余赋值x%=2x=x%2**=幂运算赋值x**=2x=x**2<<=左移赋值x<<=yx=x<<y>>=右移赋值x>>=yx=x>>y&=按位与赋值x&=yx=x&y|=按位或赋值x|=yx=x|y^=按位异或赋值x^=yx=x^y表2-10Python常用的赋值运算符Python支持多重赋值和多元赋值。多重赋值是指同一个引用可以同时被赋予多个变量;多元赋值是指赋值运算符“=”的两边都是多个对象。例2-25

多重赋值和多元赋值举例。>>>x=y=z=10

#多重赋值>>>print(x,y,z)101010>>>y=20>>>x,y,z=x+y,x+z,y+z#多元赋值>>>print(x,y,z)302030

表达式和运算符2.5用Python进行程序设计时,通常一个程序里都会有输入、输出,这样可以与用户进行交互。用户输入一些信息,程序会对用户输入的内容进行适当操作,然后输出用户想要的结果。Python提供了内置的函数input()和output()用于实现数据的输入和输出。

基本输入输出2.6

基本输入输出2.62.6.1使用input()函数输入input()的一般格式为:x=input([prompt])该函数提示用户输入,并返回用户从控制台输入的内容。可输入数字、字符串和其他任意类型的对象。input()函数用来接收用户从键盘上的输入,不论用户输入数据时使用什么界定符,input()函数的返回结果都是字符串。实际使用时需要将其转换为相应的类型再进行处理。>>>x=input(‘Pleaseinput:’)#从接盘上键入值,该值存在x变量中Pleaseinput:3>>>print(type(x))#查看x的类型,返回的结果是字符串<class'str'>>>>x=input(‘Pleaseinput:’)Pleaseimput:1y=int(x)*10#将从键盘上接收的数据转换为整型数据,然后参与运算>>>y10>>>x=eval(input(‘Pleaseinput:‘))#直接利用eval()函数将键入数据转换为表达式Pleaseinput:123+10>>>x133>>>x,y,z=eval(input(“请输入三个数:"))请输入三个数:45,56,67>>>print("%6d%6d%6d"%(x,y,z))455657>>>x=input("请输入三个数:")请输入三个数:123456789>>>a,b,c=map(int,x.split())#使用split将输入的字符串按照空格分隔,再使用int函数转化为整型>>>print(("%6d9%6d%6d"%(a,b,c))123456789

基本输入输出2.6例2-26

input应用案例。

基本输入输出2.62.6.2使用print()函数输出print()函数的格式如下:print([objects][,sep=’’][,end=’\n’][,file=sys.stdout][,flush=False])objects是输出的对象;sep是对象之间插入的分隔符,默认是空格;end是添加在输出文本最后的一个字符,默认是换行符;file指定输出内容发送到的文件,默认是显示器;flush指定输出的内容是否立即写文件。

基本输入输出2.6print()函数的示例的代码如下:(1)输出一个或者多个对象。>>>print(123,"Python",[1,2,3])123Python

[1,2,3](2)指定输出分隔符。>>>print(123,“Python",[1,2,3],sep=’;’)123;Python;[1,2,3](3)指定输出结尾符号。>>>foriin[1,2,3]:print(i,end=";”)1;2;3;(4)指定输出文件。>>>print(123,"Python",[1,2,3],file=open(r’c:\test.txt’,‘w’),flush=True)(5)指定格式化串。>>>pi=3.141592653>>>print('PI=%10.3f

'%pi)

#字段宽10,精度3PI=3.142

常用函数2.72.7.1内置函数Python中的函数分为内置函数、模块函数和用户自定义函数。本节重点讲前两个函数。内置函数(Built-inFunctions,BIF)是Python内置对象类型之一,是不需要导入任何模块即可使用的一类函数,内置在Python解释器中。在2.2.6小节中已介绍过内置关键字字的查看方法,执行dir(__builtins__)可以列出所有的内置函数,使用help(函数名)可以查看某个函数的用法。

常用函数2.7例2-27

使用dir(__builtins__)命令查看Python支持的所有内置函数,并统计输出有多少个。分析:查看所有内置函数可以用dir(__builtins__)命令,统计共有多少个可以使用len(dir(__builtins__))来完成。

常用函数2.7例2-28,内置函数的应用。>>>’’’本程序从一个三位数中提取百位、十位和个位上的数字,使用内置函数

divmod()函数来返回商和余数’’’>>>x=153>>>a,b=divmod(x,100)

#返回商和余数>>>b,c=divmod(b,10)2.7.2标准模块Python自带了很多实用的模块,称为“标准模块”或者“标准库”,我们可以直接使用import语句把这些模块导入Python文件。

常用函数2.72.7.2标准模块例2-29

查看Python自带的所有标准模块,并统计输出个数。

常用函数2.7分析:要查看Python自带的标准库,可以通过模块sys来查看。

常用函数2.7表2-12Python常用标准模块表2-12列出了Python常用的标准模块及功能说明。2.7.3内置数学函数和math模块函数

常用函数2.71.内置标准数学函数在2.7.1小节中我们学习了python内置的所有函数,其中用于数学运算的内置函数总结为表2-13所示:表2-13Python中内置的数学运算函数2.7.3内置数学函数和math模块函数

常用函数2.72.math模块函数math库是Python提供的内置数学类函数库,因为复数类型常用于科学计算,一般计算并不常用,因此math库不支持复数类型,仅支持整型数据和浮点型数据运算。math库一共提供了4个数学常数和44个函数,44个函数共分为4类,包括16个数值表示函数、8个幂对数函数、16个三角对数函数和4个高等特殊函数。math库中的函数不能直接使用,需要首先使用保留字import或者frommathimport*导入该库,然后才能使用。impo

温馨提示

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

评论

0/150

提交评论