资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/11/20,#,任务,1,:项目开发环境搭建,Python,程序设计,1,、任务描述,目录,2,、技术准备,Python,程序设计,3,、任务实施,1,、任务描述,项目组接到一个新项目,要为某学校开发一个“学生信息管理系统”,经过与客户沟通交流,确定该系统的主要功能如下图所示。整个学生信息管理系统主要包括两大模块:基本信息管理和学生成绩管理,基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。,2.1,Python,简介,技术准备,2.2 Python,特点,Python,程序设计,2.3,Python,应用,2.1,Python,简介,Python,是一门跨平台、开源免费、面向对象的解释型高级动态编程语言,由荷兰人吉多范罗苏姆(,Guido van Rossum,)于,1989,年开发。,1991,年初,,Python,发布了第一个公开发行版。,2000,年,10,月,,Python 2.0,正式发布。,2008,年,12,月,,Python 3.0,正式发布。,Python,主流版本主要有,Python 2.X,和,Python 3.X,系列。,Python 3.X,系列相比,2.X,系列在语法层面和解释器内部都做了很多重大的改进,语句输出、编码、运算和异常等方面也做了一些调整,因此,3.X,系列版本的代码无法向下兼容,2.X,系列。,2018,年,3,月,,Python,团队宣布将在,2020,年停止支持,Python 2.X,系列,只支持,Python 3.X,系列。基于此,本项目选用目前流行的,Python 3.X,系列版本进行开发。,2.2 Python,特点,1.,简单易学,Python,语法简洁,其语法主要用来精确表达问题逻辑,接近自然语言,在实现相同的程序功能时,,Python,语言的代码行数远远少于其他语言。更少的代码行数、更简洁的表达方式可减少程序错误以及缩短开发周期,易于快速上手学习。,2.,开源免费、可移植性强,由于,Python,的开源本质,,Python,可被移植到许多平台上,如,Linux,、,Windows,、,Mac OS,、,Android,等。,3.,可扩展性和可嵌入性,Python,的可扩展性和可嵌入性非常强。如果需要一段关键代码运行得更快或者希望某些算法不公开,可以把这部分程序用,C,或,C+,编写,然后在,Python,程序中调用它们。还可以将,Python,程序嵌入到,C,或,C+,程序中,从而提供脚本功能。,2.2,Python,特点,4.,编程模式多样,Python,既支持面向过程的编程也支持面向对象的编程,编程模式十分灵活。,5.,具有丰富的库,Python,自身具有丰富和强大的库,同时还拥有数量众多的第三方扩展库,这使得人们要通过编程实现相应的功能变得非常简单,这也是,Python,得以流行的原因之一。,6.,代码规范,Python,通过强制缩进来体现语句之间的逻辑关系,使得代码可读性强,进而增强了,Python,程序的可维护性。,2.3,Python,应用,1.Web,开发,Python,是目前,Web,开发的主流语言之一,其类库丰富,使用方便,能够为一个需求提供多种方案。常用的,Web,开发框架有,Django,、,Flask,、,Tornado,、,web2py,等,这些框架能够让用户快速方便地构建功能完善的高质量网站。目前很多大型网站如豆瓣、,YouTube,等均为,Python,开发。,2.,爬虫开发,除了,Python,自身的标准库,urllib,外,还有众多的第三方扩展库如,Requests,、,BeautifulSoup,等以及一些爬虫框架如,Scrapy,,这些大量的库使得利用,Python,进行爬虫开发更加方便高效。,3.,人工智能,Python,生态圈拥有大量用于机器学习、深度学习、图像识别、自然语言处理等人工智能领域的第三方扩展库,如,Sklearn,、,Tensorflow,、,PyTorch,、,NLTK,等。,2.3 Python,应用,4.,自动化运维,Python,是一种脚本语言,本身提供了一些能够调用系统功能的库,可编写脚本程序来控制系统,实现自动化运维。目前常用的一些系统自动化运维工具如,Ansible,、,Airflow,、,Celery,、,Paramiko,等都是用,Python,开发的。,5.,科学计算与数据分析,Python,生态圈为科学计算与数据分析提供了大量扩展库,如,SciPy,、,NumPy,、,Pandas,、,Matplotlib,等,通过这些库可方便地进行大量复杂的科学计算、数据分析处理与可视化。,6.,游戏开发,使用,Python,可以用更少的代码描述游戏业务逻辑,可以大大缩减大型游戏项目的代码量,因此很多游戏开发者先利用,Python,来编写游戏逻辑代码,再使用,C+,编写图形显示等对性能要求较高的模块。,Python,的,Pygame,模块可以制作,2D,游戏。,7.,多媒体应用,Python,的,PIL,、,Piddle,、,ReportLab,等模块可方便地处理图像、声音、视频、动画等,并可动态生成统计分析图表,同时还可处理二维和三维图像,因此,Python,也被广泛应用于多媒体处理中。,3.1,IDLE,的下载与安装,任务实施,3.2 IDLE,的使用,Python,程序设计,3.3,扩展库的安装与模块导入,3.1,IDLE,的下载与安装,Python,的开发环境有很多,其中比较常用的有,Anaconda,、,PyCharm,、,Eclipse+PyDev,、,IDLE,等。,Anaconda,内置了,Python,解释器和一些科学计算和数值分析相关的模块,在数据分析与数据挖掘方面具有优势,是数据科学家和数据分析人员的首选开发环境。,Pycharm,和,Eclipse+PyDev,功能强大,除了具备程序开发的一些基本功能外,还提供了项目管理、单元测试、版本控制等功能,比较适合大型项目的开发。,IDLE,是,Python,官网自带的集成开发环境,界面简洁,使用简单方便,适合小型项目的开发和初学者使用。,3.1 IDLE,的下载与安装,1,、下载,进入,Python,官方网站,https:/www.python.org,,单击页面导航菜单栏中的“,Downloads”,菜单,然后在下拉框中选择“,Windows”,菜单项,在列出的所有版本中找到要下载的版本,根据计算机操作系统选择,64,位还是,32,位。如要下载,64,位的,3.6.2,版本,通常选择“,Windows x86-64 executable installer”,选项。下载下来的安装包为一个扩展名为“,.exe”,的可执行文件。,3.1 IDLE,的下载与安装,2,、,IDLE,的安装,运行下载的,python-3.6.2-amd64.exe,安装包,出现如下图所示界面,提示有两种不同的安装方式,如果要采用系统默认路径安装,就直接单击“,Install Now”,选项,如果想指定安装路径,就选择“,Customize installation”,选项。两种安装方式都可以,根据需要选择其中一种即可。不论选用哪种安装方式,确保勾选上“,Add Python 3.6 to PATH”,复选框,这样安装完成后就无须再自行设置系统环境变量了。,3.2 IDLE,的使用,1,、交互模式,IDLE,启动后默认进入的是交互式模式,“,”,为提示符,在交互模式中,每次只能执行一条语句,当提示符“,”,再次出现时方可输入下一条语句。普通语句输入完成后直接按“,Enter”,回车键就可执行该语句,而一些复合语句需要按两次“,Enter”,回车键才能执行。,3.2 IDLE,的使用,2,、编程模式,为了代码能够重复使用或执行,或是一些比较复杂的业务逻辑,需要将程序代码保存在一个文件中,此时可利用菜单,“File”,“New File”,来创建一个程序文件,将其保存为扩展名为,“.py”,或,“.pyw”,(,GUI,程序扩展名为,“.pyw”,)的文件,然后按功能键,或选择菜单,“Run”,“Run Module”,运行程序,结果会输出到交互式窗口中,。,3.2 IDLE,的使用,命令窗口中运行,Python,程序文件的方法:(需切换到程序文件所在目录),1,、,文件名,.py,2,、,python,文件名,.py,建议采用第,2,种方法,即,python,文件名,.py,3,、常用快捷键,在,IDLE,中,除了撤销(Ctrl+Z)、全选(Ctrl+A)、复制(Ctrl+C)、粘贴(Ctrl+V)、剪切(Ctrl+X)等常规快捷键之外,其他比较常用的快捷键如下表所示。,3.2 IDLE,的使用,快捷键,功能说明,Alt+p,浏览历史命令(上一条),Alt+n,浏览历史命令(下一条),Ctrl+F6,重启,Shell,,之前定义的对象和导入的模块全部失效,F1,打开,Python,帮助文档,Alt+/,自动补全前面曾经出现过的单词,如果之前有多个单词具有相同前缀,则在多个单词中循环选择,Ctrl+,缩进代码块,Ctrl+,取消代码块缩进,Alt+3,注释代码块,Alt+4,取消代码块注释。,Tab,补全单词,3.3,扩展库的安装与模块导入,1,、扩展库的安装,(,1,)扩展库安装命令,pip install SomePackage=version,功能:在线安装,SomePackage,模块的指定版本,如没有指定相应的版本号,则默认安装最新版本。,(,2,)扩展库卸载命令,pip uninstall SomePackage=version,功能:卸载,SomePackage,模块的指定版本。,(,3,)列出当前已安装的所有模块,pip list,pip,命令的执行是在,windows,的命令提示符下进行的。,使用,pip,命令时最好是切换到,Python,安装目录下的,scripts,目录下,再执行相应的命令。,3.3,扩展库的安装与模块导入,pip,工具也支持离线方式安装扩展库。采用离线安装需要先下载相应的离线安装包,离线安装包通常是一个,wheel,文件,其扩展名为,.whl,。离线安装命令:,pip install,说明:其中文件名要包含完整路径。,例如以离线方式安装扩展库,lxml,,设下载的离线安装包,“lxml-4.3.4-cp36-cp36m-win_amd64.whl”,放在,“d:whl”,目录中,则相应的安装命令为:,pip install d:whllxml-4.3.4-cp36-cp36m-win_amd64.whl,3.3,扩展库的安装与模块导入,2,、模块导入,(,1,),import,模块名,as,别名,使用此种方式可导入模块中的所有对象,使用时需要在对象之前加上模块名作为前缀,即必须以“模块名,.,对象名,”,的形式进行访问。如果模块名比较长,可以为导入的模块设置一个比较简短的别名,然后使用“别名,.,对象名”的方式来访问其中的对象。,import math#,导入标准库,math,math.sqrt(16)#,求平方根,通过,“,模块名,.,对象名”形式访问,4.0,import random as rm#,导入标准库,random,,并为其设置一别名,rm.randint(1,10)#,随机生成一个,1,,,10,之间的整数,通过,“,别名,.,对象名”形式访问,8,3.3,扩展库的安装与模块导入,(,2,),from,模块名,import,对象名,as,别名,使用此方式仅导入模块中指定的对象,并且也可以为导入的对象起一个别名。使用此种方式导入对象后,无须在前面再加模块名作为前缀。,from math import sqrt,sqrt(16)#,求平方根函数,4.0,3.3,扩展库的安装与模块导入,(,3,),from,模块名,import*,使用此种方式可一次导入模块中所有对象,与方式(,1,)类似,但不同的是采用此种方式导入对象后,对象可直接使用,无须在前面加模块名作为前缀。,from math import*,sqrt(16),4.0,sin(0),0.0,cos(0),1.0,谢 谢,任务,2,:单个学生成绩处理,Python,程序设计,1,、任务描述,目录,2,、技术准备,Python,程序设计,3,、任务实施,学生成绩管理模块需要完成学生考试成绩的相关处理:如统计每门课程的最高分、最低分、平均分、成绩排序等。,本任务主要完成对单个学生成绩的处理:统计某个学生选修课程的总分和平均分。,完成本任务需要了解和掌握,Python,中编写程序的一些基本知识:数据的表示、存储和运算。,1,、任务描述,2.1,标识符与关键字,技术准备,2.2,数据类型,Python,程序设计,2.3,常量与变量,2.4,运算符与表达式,2.5,类型判断与类型转换,1.,标识符,标识符是程序开发人员自己定义的一些符号和名称,这些符号和名称用来标识编写程序用到的变量名、函数名、文件名等。简单地说,标识符就是一个名字。,使用标识符时应遵循以下几点。,(,1,)标识符只能由字母、数字和下画线三种字符组成,且第一个字符必须为字母或下画线。,Python 3.X,中采用,Unicode,字符集,,utf-8,编码规则,该字符集本身支持中文。因此,,Python 3.X,中允许标识符中有汉字。,(,2,)标识符大小写敏感,也即严格区分大小写,所以,Student,和,student,是两个不同的标识符。,(,3,)标识符没有长度限制。,(,4,)不能使用关键字作为标识符。,2.1,标识符与关键字,可,利用系统提供的内置函数,isidentifier(),函数来判断某一标识符是否合法,如果返回值是,True,,就表示是合法标识符,如果返回值是,False,就表示是非法标识符。,abc.isidentifier()#abc,是合法标识符,True,_123.isidentifier()#_123,是合法标识符,True,23.isidentifier()#23,为非法标识符,False,2.1,标识符与关键字,2.,关键字,Python,中关键字有特殊含义,不允许通过任何方式改变其含义,也不允许其用来作为变量名、函数名等标识符。,Python,自带了一个,keyword,模块,用于检测关键字。要想查看,Python,中的关键字,可在导入模块,keyword,后,利用,keywork.kwlist,来查看所有关键字。代码如下:,import keyword,keyword.kwlist,2.1,标识符与关键字,Python,中的基本数据类型,:,2.2,数据类型,数据类型,示例,整型(,int,),2,,,3,浮点型(,float,),3.4,,,3e5,复数型(,complex,),3-4j,,,3+4J,字符串(,str,),Python,,,good,字节串(,bytes,),b0 x41,布尔型(,bool,),只有两个值:,True,,,False,空类型(,NoneType,),None,1.,整型(,int,),整型数据也就是通常所说的整数,可正可负。有以下几种不同表示形式:,十进制整数:如,0,、,-1,、,9,、,123,十六进制整数:以,0 x,开头,如,0 x10,、,0 xfa,、,0 xabcdef,八进制整数:以,0o,开头,如,0o35,、,0o11,二进制整数:以,0b,开头如,,0b101,、,0b100,2.2,数据类型,2.,浮点型,(float),浮点型数据由整数部分与小数部分组成,既可以用小数形式表示(如,2.3,),也可以使用科学计数法表示(如,2.3e-5,,,2.5e2,)。,在使用科学计数法表示时,要求字母,e,(或,E,)前面必须有数字,后面必须为整数。,2.2,数据类型,3.,复数,(complex),复数由实部和虚部两部分构成,虚部以字母,j,或,J,结尾,可以用形如,a+bj,或,a+bJ,表示,如,3+2j,,,34J,。,2.2,数据类型,在,Python,中,将整型、浮点型和复数统称为数字类型(,Number,)。对于数字类型,,Python,提供了大量的函数可对其操作。常用的内置函数有求绝对值函数,abs(x),、四舍五入取整函数,round(x,小数位数,),等,。,abs(-9.8)#,求绝对值,9.8,round(123.4567,2)#,保留,2,位小数,123.46,round(123.4567)#,取整(也即保留,0,位小数),123,help(round),2.2,数据类型,除了内置函数之外,标准模块,math,中也提供了大量的函数可供数字型数据使用。,2.2,数据类型,函数,功能说明,ceil(x),返回数字的上入整数,如,math.ceil(4.1),返回,5,floor(x),返回数字的下舍整数,如,math.floor(4.9),返回,4,sqrt(x),返回,x,的平方根,factorial(x),返回,x,的阶乘,gcd(x,y),返回,x,、,y,的最大公约数,log10(x),log,10,x,log2(x),log,2,x,sin(x),、,cos(x),、,tan(x),等,三角函数,import math,math.ceil(8.3),9,math.ceil(8.9),9,2.2,数据类型,math.floor(8.3),8,math.floor(8.9),8,help(math.ceil),4,、字符串,(,1,),普通字符串,字符串是指用单引号、双引号或三引号括起来的一串字符。,如,a,、,中国,、,Python,。,单引号、双引号、三单引号、三双引号可以互相嵌套,用来表示复杂字符串。,例:,Tom said,Lets go,。,空字符串可用,或,来表示。,2.2,数据类型,(,2,),转义字符,有一些具有特殊含义的控制字符,如回车、换行等,这些非显示字符难以用一般形式的字符表示,通常用“,”开头,后面跟一个固定字符来表示,称为转义字符。,2.2,数据类型,转义字符,含义,转义字符,含义,反斜杠符号,v,纵向制表符,单引号,t,横向制表符,双引号,r,回车,a,响铃,f,换页,b,退格,(Backspace),oyy,八进制数,yy,代表的字符,例如:,o12,代表换行,n,换行,xyy,十进制数,yy,代表的字符,例如:,x0a,代表换行,(,3,),原始字符串,字符串定界符前面加字母,r,或,R,表示原始字符串,其中的特殊字符不进行转义,但字符串的最后一个字符不能是“,”。,原始字符串主要用于正则表达式、文件路径或者,URL,等场合。,2.2,数据类型,print(C:Windowsnotepad.exe)#,字符,n,被转义为换行符,C:Windows,otepad.exe,print(rC:Windowsnotepad.exe)#,原始字符串,任何字符都不转义,C:Windowsnotepad.exe,print(d:workspacetemp)#,字符,t,被转义为横向制表符,d:workspaceemp,print(rd:workspacetemp)#,原始字符串,任何字符都不转义,d:workspacetemp,2.2,数据类型,5.,字节串(,bytes,),字节串是指以字母,b,或,B,开始,以单引号、双引号、三引号引起来的一串字节,如:,b0 x41,。,6.,布尔型(,bool,),布尔型数据只有两个值:,True,和,False,。,7.,空类型(,NoneType,),Python,中空类型只有一个数据值,None,,表示什么都没有。与,0,值和空字符串,不同。,2.2,数据类型,1.,常量,在程序运行过程中其值保持不变的量称为常量,分为字面常量和符号常量。例如,3,,,hello,,,True,等为字面常量;标准模块,math,中的,pi,为符号常量,代表数学中的圆周率,(值为,3.141592653589793,)。,2.,变量,在程序运行过程中其值可以变化的量称为变量。变量使用时须先为其取一个名字,称为变量名,然后才可为其赋值。在,Python,中,变量无须声明,可直接赋值。,在给变量命名时应遵循标识符命名规则。虽然原则上符合语法要求的字符或字符串都可以做为变量名,但为了提高程序的规范性和可读性,在给变量命名时应尽量做到见名知意,即变量名应能体现其表示的变量的含义。例如用,age,表示年龄,用,score,表示成绩等。,2.3,常量与变量,不同的数据类型适用于不同的运算符,,Python,中针对不同的数据类型提供了几种不同的运算符。用运算符、括号将数据连接起来的有意义的式子称为表达式。,2.4,运算符与表达式,1.,算术运算符,算术运算符用于对数字,型数据,(整型、浮点型、复数)进行运算。,2.4,运算符与表达式,运算符,含义,示例,+,加,3+5,的结果为,8,-,减,3 2,的结果为,1,*,乘,3*2,的结果为,6,/,除,5/2,的结果为,2.5,%,取余,5%2,的结果为,1,*,幂运算,3*2,的结果为,9,/,求整商,9/4,的结果为,2,(,1,),“/”,的结果为整数,对整数和浮点数都可用,如操作数中有浮点数,结果为浮点数形式的整数。,(,2,),“/”,的结果是浮点数。,(,3,)对于复数,,“%”,和,“/”,运算无效。,(,4,)对浮点数来说,,“%”,运算的结果是,“a/b”,的浮点数余数,即,“a (a/b)*b”,。,(,5,)算术运算符的优先级是先幂运算,然后乘除取余求整商,最后加减。,2.4,运算符与表达式,13/3#,整数进行,“/”,运算结果为整数,4,8.9/3#,浮点数进行,“/”,运算结果为浮点数形式的整数,2.0,10/5#“/”,运算结果为浮点数,2.0,10.5%2#,浮点数求余,0.5,(3+4j)%2#,复数不能进行,“%”,运算,Traceback(most recent call last):,File,line 1,in,(3+4j)%2,TypeError:cant mod complex numbers.,2.4,运算符与表达式,2.,关系,运算符,关系运算符通常用于,比较,两个数据之间的大小关系,。,2.4,运算符与表达式,运算符,含义,示例,小于,3 5,的结果为,True,=,小于或等于,4,大于,4 5,的结果为,False,=,大于或等于,4=5,的结果为,False,=,等于,4=5,的结果为,False,!=,不等于,4!=5,的结果为,True,(,1,)通常情况下,关系运算符用于比较同一类型的操作数,且操作数之间能比较大小,比较才有效。,(,2,)复数无法进行比较。,(,3,),Python,中允许关系运算符的连用。如,“2 10 17”,相当于,“2 10,并且,10 4 5.8 8,False,4 5 8#,等价于,45,并且,5 3 2 2,并且,2 1=1 0#,等价于,1=1,并且,10,True,a 3+4j 3+3j#,复数无法比较大小,Traceback(most recent call last):,File,line 1,in,3+4j 3+3j,TypeError:not supported between instances of complex and complex,hello 4#,字符串和数字不能比较,Traceback(most recent call last):,File,line 1,in,hello 4,TypeError:not supported between instances of str and int,2.4,运算符与表达式,3.,逻辑,运算符,逻辑运算符只有,3,个,,,按优先级从高到低分别是,not,、,and,和,or,。,2.4,运算符与表达式,运算符,逻辑表达式,含义,示例,not,not x,逻辑非,:,如果,x,为,True,(或等价于,True,),返回,False,。如果,x,为,False(,或等价于,False),,它返回,True,Not True,的结果为,False,and,x and y,逻辑与:如果,x,是,False,(或等价于,False,),它返回,x,的值,否则它返回,y,的值,True and False,的结果为,False,or,x or y,逻辑或:如果,x,是,True,(或等价于,True,),它返回,x,的值,否则它返回,y,的值,True or False,的结果为,True,(,1,)一般来说,逻辑运算符两边的操作数应是布尔型数据,但由于布尔型数据,True,和,False,分别映射到整型数据的,1,和,0,,可以将整数的非,0,值理解为,True,,而整数,0,理解为,Fasle,,因此逻辑运算符两边的操作数可以是非布尔型数据。,(,2,)当逻辑运算符两边的操作数不是布尔型数据,True,和,False,时,运算符,and,和,or,的结果也不一定是,True,或,False,,但运算符,not,的结果一定是,True,或,False,。,(,3,)逻辑运算符,and,和,or,具有短路求值的特性,对于“表达式,1 and,表达式,2”,运算,如果表达式,1,的值为,False,或相当于,False,,则直接返回表达式,1,的值,表达式,2,不会被计算;对于“表达式,1 or,表达式,2”,运算,如果表达式,1,的值为,True,或相当于,True,,则直接返回表达式,1,的值,表达式,2,不会被计算。,2.4,运算符与表达式,8 and 5#,表达式,1,的值相当于,True,返回表达式,2,的值,5,0 and 6#,表达式,1,的值相当于,False,返回表达式,1,的值,0,4 or 3#,表达式,1,的值相当于,True,返回表达式,1,的值,4,0 or 4+5#,表达式,1,的值相当于,False,返回表达式,2,的值,9,not 4,False,not 0,True,2.4,运算符与表达式,4.,字符串运算符,Python,中字符串运算符,:,2.4,运算符与表达式,运算符,含义,示例,+,字符串连接,hello,+,Python,的结果为,helloPython,*,字符串重复,hello,*3,的结果为,hellohellohello,5.,位,运算符,位运算符只能用于整数,其内部执行过程是:首先将整数转换为二进制数,然后按位进行运算,最后再把计算结果转换为十进制数返回。,变量,a,为,60,(,0011 1100,),,b,为,13,(,0000 1101,)。,2.4,运算符与表达式,运算符,含义,示例,&,按位与运算符:参与运算的两个值,如果两个相应位都为,1,则该位的结果为,1,否则为,0,(a&b),输出结果,12,,二进制解释:,0000 1100,|,按位或运算符:只要对应的二个二进位有一个为,1,时,结果位就为,1,。,(a|b),输出结果,61,,二进制解释:,0011 1101,按位异或运算符:当两对应的二进位相异时,结果为,1,(a b),输出结果,49,,二进制解释:,0011 0001,按位取反运算符:对数据的每个二进制位取反,即把,1,变为,0,把,0,变为,1,(a),输出结果,-61,,二进制解释:,1100 0011,左移动运算符:运算数的各二进位全部左移若干位,由“,”,右边的数指定移动的位数,高位丢弃,低位补,0,。,a,右移动运算符:把“,”,左边的运算数的各二进位全部右移若干位,“,”,右边的数指定移动的位数,a 2,输出结果,15,,二进制解释:,0000 1111,6.,赋值,运算符,2.4,运算符与表达式,运算符,含义,示例,=,简单的赋值运算符,a=8,+=,加法赋值运算符,a+=2,等效于,a=a+2,-=,减法赋值运算符,a-=2,等效于,a=a-2,*=,乘法赋值运算符,a*=2,等效于,a=a*2,/=,除法赋值运算符,a/=2,等效于,a=a/2,%=,取模赋值运算符,a%=2,等效于,a=a%2,*=,幂赋值运算符,a*=2,等效于,a=a*2,/=,取整除赋值运算符,a/=2,等效于,a=a/2,Python,中的赋值运算符分为简单赋值运算符和复合赋值运算符。,(,1,)简单赋值运算符,“=”,是简单赋值运算符,其作用是给变量赋值。,(,2,)复合赋值运算符,在简单赋值运算符,“=”,前加上其他运算符(不仅仅只是表中列出的算术运算符,还可以是位运算符),就构成复合赋值运算符,如,“+=“-=“*=“a=3,id(a),1980090096,b=3,id(b),1980090096,2.4,运算符与表达式,身份运算符,is,就相当于判断两个变量的,id(),值是否相同,如果相同,返回值为,True,否则为,False,。,身份运算符,is not,就相当于判断两个变量的,id(),值是否不相同,如果不相同,返回值为,True,否则,为,False,。,a=3,b=3,id(a),1980090096,id(b),1980090096,a is b#a,和,b,都指向同一个存储地址,True,2.4,运算符与表达式,a=4#a,指向的地址发生了改变,id(a),1980090128,a is b#a,和,b,不再指向同一个存储地址,False,a is not b,True,8,、成员运算符,成员运算符主要用于测试一个数据是否是一个序列中的数据成员,。,2.4,运算符与表达式,运算符,含义,示例,in,判断一个数据是否是一个序列中的数据成员,如果是,返回值为,True,,否则返回值为,False,h in hello,结果为,True,not in,判断一个数据是否不是一个序列中的数据成员,如果不是,返回值为,True,,否则返回值为,False,H not in hello,结果为,True,h in hello,True,H in hello,False,9,、运算符优先级,2.4,运算符与表达式,运算符,描述,+a,-a,a,一元运算符(正、负、取反),*,乘方(从右至左运算),*,、,/,、,/,、,%,乘、除、整除、取余,+,、,-,加、减,左移、右移,&,按位与,按位异或,|,按位或,、,、,=,、,=,、,!=,关系运算符,is,、,is not,身份运算符,in,、,not in,成员运算符,not,逻辑非,and,逻辑与,or,逻辑或,1,、类型判断,(1)type(),函数,格式:,type(,对象,),功能:返回对象的数据类型。,type(3)#,查看整数,3,的数据类型,type(3)#,查看字符串,3,的数据类型,type(True)#,查看布尔数据,True,的数据类型,2.5,类型判断与类型转换,type(3.4)#,查看浮点数,3.4,的数据类型,type(bh)#,查看字节串,bh,的数据类型,type(3+4j)#,查看复数,3+4j,的数据类型,type(None)#,查看空值,None,的数据类型,(2)isinstance(),函数,格式:,isinstance,(对象,类型),功能:用于判断一个对象是否是指定数据类型的一个实例,如果是,返回,True,,否则返回,False,。,isinstance(3,int)#,判断,3,是否是整型的一个实例,True,isinstance(3,int)#,判断,3,是否是整型的一个实例,False,isinstance(3,str)#,判断,3,是否是字符型的一个实例,True,2.5,类型判断与类型转换,2.,类型转换,原则上应该是同种类型的数据参加相应的运算,但实际上有些不同类型之间的数据也可以参加运算,当不同类型之间数据参加运算时,此时会发生数据类型的转换,例如计算表达式“,3+4.5”,时,Python,解释器会把整型数,3,转换成浮点数然后再运算,最终结果为浮点型数据,这种由系统自动完成的类型转换称之为隐式类型转换,也称自动类型转换。当自动类型转换不能满足要求时,如对上述表达式“,3+4.5”,,希望最终结果是整型数,这时就可采用强制类型转换。,2.5,类型判断与类型转换,Python,中内置了一系列可用于实现强制类型转换的函数,常用转换函数,如下表所示:,2.5,类型判断与类型转换,函数,功能,int(),将浮点型、布尔类型和符合数值规范的字符串转换为整型,float(),将整型和符合数值规范的字符串转换为浮点型,complex(),将其他数值类型或符合数值类型规范的字符串转换为复数类型,str(),将数值类型转换为字符串,ord(),返回单个字符的,Unicode,编码,chr(),返回指定,Unicode,编码对应的字符,int(3.6)#,将浮点数转换为整型数,3,int(True)#,将布尔型数据转换为整型数,1,int(34)#,将字符串转换为整型数,34,float(3)#,将整型数转换为浮点数,3.0,float(True)#,将布尔型数据转换为浮点数,1.0,complex(3)#,将整数转换为复数,只给出一个参数时此参数实部,虚部默认为,0,(3+0j),complex(3,5)#,将整数转换为复数,两个参数分别表示实部、虚部,(3+5j),2.5,类型判断与类型转换,complex(3+4j)#,将字符串转换为复数,(3+4j),str(3)#,将整数转换为字符串,3,str(3.9)#,将浮点数转换为字符串,3.9,str(True)#,将布尔数转换为字符串,True,str(3+4j)#,将复数转换为字符串,(3+4j),ord(a),97,chr(97),a,2.5,类型判断与类型转换,提示:,int(),函数还可以将其他进制表示的字符串数据转换成十进制。其使用格式是,int(x,base),。,x,表示要转换的字符串数据,,base,表示这个字符串数据是几进制,默认为十进制。,int(11,2)#,将二进制,11,转换为十进制,3,int(11,8)#,将八进制,11,转换为十进制,9,int(11,16)#,将十六进制,11,转换为十进制,17,int(11)#,将十进制,11,转换为十进制,11,2.5,类型判断与类型转换,3.1,任务简介,任务实施,3.2,参考代码,Python,程序设计,本任务要统计某个学生选修课程的总分和平均分。,已知学生王芳选修课程语文、数学、英语各科的成绩分别是,80,、,90,、,88,,求其成绩总分和平均分。,3.1,任务简介,name=,王芳,c
展开阅读全文