Python程序设计-从基础开发到数据分析(第2版)-微课版 课件全套 夏敏捷 第1-17章 Python语言介绍- Python数据分析_第1页
Python程序设计-从基础开发到数据分析(第2版)-微课版 课件全套 夏敏捷 第1-17章 Python语言介绍- Python数据分析_第2页
Python程序设计-从基础开发到数据分析(第2版)-微课版 课件全套 夏敏捷 第1-17章 Python语言介绍- Python数据分析_第3页
Python程序设计-从基础开发到数据分析(第2版)-微课版 课件全套 夏敏捷 第1-17章 Python语言介绍- Python数据分析_第4页
Python程序设计-从基础开发到数据分析(第2版)-微课版 课件全套 夏敏捷 第1-17章 Python语言介绍- Python数据分析_第5页
已阅读5页,还剩486页未读 继续免费阅读

下载本文档

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

文档简介

Python程序设计—从基础到开发

第1章Python语言介绍1.1Python语言简介1.2安装与配置Python环境1.3Python开发环境IDLE简介1.4Python基本输入输出1.5Python代码规范1.6使用帮助1.1Python语言简介Python是一种面向对象、解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年,Python源代码同样遵循GPL(GNUGeneralPublicLicense)协议。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。正因为Python语言的简洁、优雅、开发效率高,它常被用于网站开发,网络编程,图形处理,黑客编程等等。Python由荷兰的GuidovanRossum设计。Python第一个版本于1991年初公开发行。。Python2.0于2000年10月发布,增加了许多新的语言特性。Python3.0于2008年12月发布,此版本不完全兼容Python2.0,导致Python2.0与Python3.0不兼容。Python3.5在2015年9月发布Python3.6正式版在2016年12月发布,主要的新特性包括:async和await关键字可用于生成器和推导;改善CPython实现,在不破坏兼容性的情况下降低内存占用和提高速度;可插拔支持JIT、跟踪器和调试器;引入新的字符串和数字格式,为变量加入类型注释,简化定制子类创建的方法,等等。Python语言的发展历史TIOBE2016年8月编程语言排行榜TIOBE2021年2月编程语言排行榜是一种面向对象、解释型计算机程序设计语言纯粹的自由软件Python语法简洁清晰,用空格(space)作为语句缩进Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。Python快速生成程序的原型封装Python可以调用的扩展类库跨平台,程序无需修改在Windows、Linux、Unix、Mac等操作系统上使用支持函数式编程函数式编程什么是函数式编程?在维基百科中给出了详细的定义,函数式编程(英语:functionalprogramming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambdacalculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。主要思想是把运算过程尽量写成一系列嵌套的函数调用。函数式编程函数式编程的特点:1.把计算视为函数而非指令2.纯函数式编程:不需要变量,没有副作用,测试简单3.支持高阶函数,代码简洁Python支持的函数式编程:不是纯函数式编程:允许有变量支持高阶函数:函数也可以作为变量传入支持闭包:有了闭包就能返回函数有限度地支持匿名函数高阶函数(能接受函数做参数的函数)Map()是python内置的高阶函数,它接受一个函数f和一个list;它通过把f分别作用在每一个list元素上,得到一个新的iterator(新list)

并返回。Web开发,基于python的优秀web框架如Django网络编程,网页解析,如爬虫程序开发科学计算,各种实验数据的处理以及相关实验模拟等,机器学习等数据库应用多媒体开发电子游戏开发需要什么应用就能找到什么库应用领域1.1.3Python语言的应用领域1.Web开发Python语言支持Web网站开发,比较流行的开发框架有web2py、django等。许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。

利用py2exe模块可以将Python程序转换为.exe可执行程序,使得Python程序可以脱离Python系统环境来运行。2.网络编程

Python语言提供了socket模块,对Socket接口进行了二次封装,支持Socket接口的访问;还提供了urllib、cookielib、httplib、scrapy等大量模块,用于对网页内容进行读取和处理,并结合多线程编程以及其他有关模块可以快速开发网页爬虫之类的应用程序。3.科学计算与数据可视化

Python中用于科学计算与数据可视化的模块有很多,例如NumPy、SciPy、SymPy、Matplotlib、Traits、TraitsUI、Chaco、TVTK、Mayavi、VPython、OpenCV等,涉及的应用领域包括数值计算、符号计算、二维图表、三维数据可视化、三维动画演示、图像处理以及界面设计等。

4.数据库应用

Python数据库模块有很多,例如,可以通过内置的sqlite3模块访问SQLite数据库,使用pywin32模块访问Access数据库,使用pymysql模块访问MySQL数据库,使用pywin32和pymssql模块来访问SQLSever数据库。5.多媒体开发

PyMedia模块是一个用于多媒体操作的Python模块,可以对包括WAV、MP3、AVI等多媒体格式文件进行编码、解码和播放;PyOpenGL模块封装了OpenGL应用程序编程接口,通过该模块可在Python程序中集成二维或三维图形;PIL(PythonImagingLibrary,Python图形库)为Python提供了强大的图像处理功能,并提供广泛的图像文件格式支持。6.电子游戏应用

Pygame就是用来开发电子游戏软件的Python模块,在SDL库的基础上开发,可以支持多个操作系统。使用Pygame模块,可以在Python程序中创建功能丰富的游戏和多媒体程序。目前使用Python的企业Google在其网络搜索系统中广泛应用了Python,并且聘用了Python的创作者。YouTube视频分享服务大部分是由Python编写的。流行的P2P文件分享系统Bittorrent是一个Python程序。Intel、Cisco、Hewlett-Packard、Seagate、Qualcomm和IBM使用Python进行硬件测试。IndustrialLight&Magic、Pixar等公司使用Python制作动画电影。NASA、LosAlamos、Fermilab、JPL等使用Python实现科学计算任务。IRobot使用Python开发了商业机器人真空吸尘器。ESRI在其流行的GIS地图产品中使用Python作为终端用户的定制工具。NSA在加密和智能分析中使用Python。Python缺点任何编程语言都有缺点,Python缺点主要有:(1)运行速度慢。(2)代码不能加密。(3)用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误。1.2安装与配置Python环境1.2安装与配置Python环境1.2.2运行Python安装成功后,cmd打开命令提示符窗口,敲入python后,会出现图1-2命令提示符窗口。在窗口中看到python的版本信息的画面,就说明Python安装成功。1.3Python开发环境IDLE简介1.3.1IDLE的启动安装Python后,我们可以从“开始”菜单→“所有程序”→“Python3.7”→“IDLE(Python3.7)”来启动IDLE。Python的命令执行方式

启动Python解释器后,可以直接在其提示符(>>>)后输入语句。例如,先在提示符>>>后输入一个输出语句,下一行将接着输出结果。>>>print("Hello,World!")Hello,World!>>>print(1+3/4)1.751.3.2利用IDLE创建Python程序可在IDLE界面中使用菜单“File”→“NewFile”命令启动编辑器(图1-4所示),来创建一个程序文件,输入代码并保存为文件(务必要保证扩展名为“.py”)。p=input("Pleaseinputyourpassword:\n")ifp!="123":print("passworderror!")1.3.2利用IDLE创建Python程序Python程序员通常选用第三方集成开发环境(IDE,IntegratedDevelopmentEnvironment)进行程序设计。常用的IDE有Notepad++,PyScripter,PyCharm,EclipsewithPyDev,Komodo,WingIDE等,它们通常具有一些自动代码完成、参数提示、代码错误检查等功能1.3.3IDLE常用编辑功能对于“Format”菜单,常用的选项及解释如下所示:Indentregion:使所选内容右移一级,即增加缩进量。Dedentregion:使所选内容组左移一级,即减少缩进量。Commentoutregion:将所选内容变成注释。Uncommentregion:去除所选内容每行前面的注释符。Newindentwidth:重新设定制表位缩进宽度,范围2~16,宽度为2相当于1个空格。Expandword:单词自动完成。Toggletabs:打开或关闭制表位。1.3.4在IDLE中运行和调试程序1.运行Python程序要使用IDLE执行程序的话,可以从“Run”菜单中选择“RunModule”菜单项(或按F5键)2.使用IDLE的调试器在“PythonShell”窗口中单击“Debug”菜单中的“Debugger”菜单项,就可以启动IDLE的交互式调试器。这时,IDLE会打开图1-6的“DebugControl”窗口,并在“PythonShell”窗口中输出“[DEBUGON]”并后跟一个“>>>”提示符。这样,我们就能像平时那样使用这个“PythonShell”窗口了,只不过现在输入的任何命令都是允许在调试器下。在“DebugControl”窗口查看局部变量和全局变量等有关内容。1.3.4在IDLE中运行和调试程序>>>[DEBUGON]>>>x=3单击GO[DEBUGON]>>>y=4单击GO[DEBUGON]>>>z=5[DEBUGON]>>>常用的Python第三方编辑器Python程序员通常选用第三方集成开发环境(IDE,IntegratedDevelopmentEnvironment)进行程序设计。常用的IDE有Notepad++,PyScripter,PyCharm,EclipsewithPyDev,Anaconda3,WingIDE,Visualstudio.NET等,它们通常具有一些自动代码完成、参数提示、代码错误检查等功能PyScript2.6

绿色软件,支持python3.4,支持64bit,良好代码提示,支持中文,免费PyScript使用中文编码的设置PyCharm

支持python3.x,良好代码提示,中文编码不需设置,免费版Python功能齐全但菜单为英文pipinstallpygamepipinstall***.whl(离线包)1.4Python基本输入输出1.4.1Python基本输入输入是通过input()函数来实现的,input()的一般格式为:a=input('提示:')基本输入如果需要输入整数或小数,则需要使用int或float函数进行转。例如:

1.4Python基本输入输出1.4.2Python基本输出Python2.7和Python3.5的输出方法也不完全一致。在Python2.7中,使用print语句进行输出,而Python3.5中使用print()函数进行输出。foriinrange(10,20):print(i,end='

') Python基本输出Python基本输出1.5Python代码规范(1)缩进Python程序是依靠代码块的缩进来体现代码之间的逻辑关系的(2)注释方法一:以#开始,表示本行#之后的内容为注释。#循环输出0到9数字foriinrange(10):print(i,end='')方法二:包含在一对三引号'''...'''或"""..."""之间且不属于任何语句的内容将被解释器认为是注释。1.5Python代码规范(3)每个import只导入一个模块。而不要一次导入多个模块。(4)如果一行语句太长,可以在行尾加上反斜杠“\”来换行分成多行,但是更建议使用括号来包含多行内容。(5)必要的空格与空行运算符两侧、函数参数之间、逗号两侧建议使用空格分开。不同功能的代码块之间、不同的函数定义之间建议增加一个空行以增加可读性。(6)常量名所有字母大写,由下划线连接各个单词。类名首字母大写。1.6使用帮助使用格式如下:help(对象)下面分3种情况进行说明。1.查看内置函数和类型的帮助信息>>>help(max)2.查看模块中的成员函数信息>>>importos>>>help(os.fdopen)上例查看os模块中的fdopen成员函数信息3.查看整个模块的信息使用help(模块名)就能查看整个模块的帮助信息。注意先import导入该模块。例如:查看math模块方法:>>>importmath>>>help(math)Python是一种解释型语言Python是一种解释型语言Python程序源码可以直接从源代码运行程序。Python解释器将源代码转换为字节码,然后把编译好的字节码转发到Python虚拟机(PVM)中进行执行。Python是一种解释型语言当运行Python文件的时候,Python解释器会执行两个步骤:把源代码编译为字节码(以.pyc文件保存)把编译好的字节码转发到PVM中加以执行解释型语言和编译型语言根本区别在于:编译型语言会将原文件通过编译生成目标程序,而解释型语言不会将整个源文件编译生成目标程序,解释型语言进行解释执行,Python语言就属于这种执行方式,可以理解为,解释一句,执行一句,这就是解释性语言的精髓所在。第2章Python语法基础

472.1Python数据类型2.1.1数值类型Python数值类型用于存储数值。整型(int):通常被称为是整型或整数,是正或负整数,不带小数点。长整型(long):无限大小的整数,整数最后是一个大写或小写的L。在Python3里,只有一种整数类型

int,没有Python2中的Long。浮点型(float):浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.78e2就是2.78x102=278)复数(complex):复数由实数部分和虚数部分构成,可以用a+bj,或者complex(a,b)表示,复数的虚部以字母j或J结尾。如:2+3j。48Python使用单引号和双引号来表示字符串是一样的。1.创建和访问字符串创建字符串很简单,只要为变量分配一个值即可。例如:var1='HelloWorld!'var2="PythonProgramming"2.Python转义字符需要在字符中使用特殊字符时,Python用反斜杠(\)转义字符2.1.2字符串493.Python字符串运算符Python字符串运算符如表2-2所示。a='Hello'b='Python'2.1.2字符串504.字符串格式化Python支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到有字符串格式符的模板中。在Python中,字符串格式化使用与C语言中printf函数一样的语法。print(“我的名字是%s年龄是%.2f"%('xmj',41))Python用一个元祖将多个值传递给模板,每个值对应一个字符串格式符。上例将'xmj'插入到%s处,41插入到%d处。所以输出结果:我的名字是xmj年龄是412.1.2字符串514.字符串格式化2.1.2字符串522.1.3布尔类型Python支持布尔类型的数据,布尔类型只有True和False两种值。and与运算:只有两个布尔值都为True时,计算结果才为True。or或运算:只要有一个布尔值为True,计算结果就是True。not非运算:把True变为False,或者把False变为True:在Python中,布尔类型还可以与其他数据类型做and、or和not运算,这时下面的几种情况会被认为是FALSE:为0的数字,包括0,0.0;空字符串'',"";表示空值的None;空集合,包括空元祖(),空序列[],空字典{};其他的值都为TRUE。例如:a='python'print(aandTrue)#结果是Trueb=''print(borFalse)#结果是False53在Python中,逻辑值True和False作为数值,则分别是整型值1和0参与运算。例如:>>>x=False>>>a=x+(5>4)#结果a是1>>>b=x+5#结果b是5542.1Python数据类型2.1.4空值空值是Python里一个特殊的值,用None表示。它不支持任何运算也没有任何内置函数方法。None和任何其他的数据类型比较永远返回False。在Python中未指定返回值的函数会自动返回None。2.1.5Python数字类型转换x=20

#八进制为24y=345.6print(oct(x)) #打印结果是0o24print(int(y)) #打印结果是345print(float(x)) #打印结果是20.0print(chr(65)) #A的ASCII为65,打印结果是Aprint(ord('B')) #B的ASCII为66,打印结果是66552.2常量和变量2.2.1变量变量在程序中就是用一个变量名表示,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,比如:在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:a=123 #a是整数a='ABC' #a变为字符串这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。562.2常量和变量理解变量572.2.2常量所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:PI=3事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,实际上是可以改变变量PI的值。582.3运算符与表达式Python语言支持运算符有以下几种类型。•算术运算符•比较(即关系)运算符•赋值运算符•逻辑运算符•位运算符•成员操作符•标识操作符592.3运算符与表达式1.算术运算符算术运算符实现数学运算,Python语言算术运算符如表2-5所示。假设其中变量a=10和变量b=20。602.关系运算符关系运算符用于两个值进行比较,运算结果为True(真)或False(假)。Python中的关系运算符如表2-6所示。假设其中变量a=10和变量b=20。613.逻辑运算符Python中提供了三种逻辑运算符,它们是:and(逻辑与,二元运算符)or(逻辑或,二元运算符)not(逻辑非,一元运算符)624.赋值运算符赋值运算符“=”的一般格式为:变量=表达式它表示将其右侧的表达式求出结果,赋给其左侧的变量。例如:

i=3*(4+5) #i的值变为27635.位运算符

位(bit)是计算机中表示信息的最小单位,位运算符作用于位和位操作。Python中位运算符如下:按位与(&)、按位或(|)、按位异或(^)、按位求反(~)、左移(<<)、右移(>>)。位运算符是对其操作数按其二进制形式逐位进行运算。a= 00111100b= 00001101a&b= 00001100a|b= 00111101a^b= 00110001~a= 11000011646.Python成员运算Python成员运算符判断序列中是否有某个成员。成员运算符如表2-9所示。657.Python标识运算符标识符比较两个对象的内存位置。

668.Python运算符优先级在一个表达式中出现多种运算时,将按照预先确定的顺序计算并解析各个部分,这个顺序称为运算符优先级。672.3.2表达式表达式是一个或多个运算的组合。Python语言的表达式与其他语言的表达式没有显著的区别。每个符合Python语言规则的表达式的计算都是一个确定的值。对于常量、变量的运算和对于函数的调用都可以构成表达式。在后续章节中介绍的序列、函数、对象都可以成为表达式一部分。682.4序列数据结构数据结构是计算机存储、组织数据的方式。序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字即它的位置或索引,第一个索引是0,第二个索引是1,依此类推。序列都可以进行的操作包括索引,截取(切片),加,乘,成员检查。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。Python内置序列类型最常见的是列表、元组、字符串。另外,Python提供了字典和集合这样的数据结构,它们属于无顺序的数据集合体,不能通过位置索引号来访问数据元素。692.4.1列表列表(list)是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表类似其他语言的数组,但功能比数组强大的多。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。实例如下:list1=['中国','美国',1997,2000]list2=[1,2,3,4,5]列表索引从0开始。列表可以进行截取(切片)、组合等。702.4.1列表1.访问列表中的值list1=['中国','美国',1997,2000];list2=[1,2,3,4,5,6,7];print("list1[0]:",list1[0])print("list2[1:5]:",list2[1:5])712.4.1列表2.更新列表可以对列表的数据项进行修改或更新,实例如下:list=['中国','chemistry',1997,2000];print("Valueavailableatindex2:")print(list[2])list[2]=2001;print("Newvalueavailableatindex2:")print(list[2])3.删除列表元素方法一:使用del语句来删除列表的的元素方法二:使用remove()方法来删除列表的元素方法三:使用pop()方法方法来删除列表的指定位置的元素,无参数时删除最后一个元素722.4.1列表4.添加列表元素可以使用

append()方法在列表末尾添加元素,如下实例:list1=['中国','美国',1997,2000]list1.append(2003)print(list1)以上实例输出结果:['中国','美国',1997,2000,2003]732.4.1列表4.添加列表可以使用

+=,+连接另一个列表74>>list01=[1,2,3]>>>list02=[4,5,6]>>>>>>list01.extend(list02)>>>list01[1,2,3,4,5,6]2.4.1列表5.列表排序Python列表有一个内置的list.sort()排序方法可以对原列表进行排序。还有一个sorted()内置函数,它会从原列表构建一个新的排序列表。例如:list1=[5,2,3,1,4]list1.sort()#list1是[1,2,3,4,5]调用sorted()函数即可返回一个新的已排序列表。list1=[5,2,3,1,4]list2=sorted([5,2,3,1,4])#list2是[1,2,3,4,5],list1不变list.sort()和sorted()接受布尔值的reverse参数,这用于标记是否降序排序。list1=[5,2,3,1,4]list1.sort(reverse=True)#list1是[5,4,3,2,1],True是降序排序,False是升序排序752.4.1列表6.定义多维列表可以将多维列表视为列表的嵌套,即多维列表的元素值也是一个列表。只是维度比父列表小一。例如:a=["张三",90,80,70]b=["李四",98,88,77]c=["王五",99,89,77]>>>m=[a,b,c]>>>m[['张三',90,80,70],['李四',98,88,77],['王五',99,89,77]]>>>m=[['张三',90,80,70],['李四',98,88,77],['王五',99,89,77]]76张三908070李四988877王五9989772.4.1列表6.定义多维列表可以将多维列表视为列表的嵌套,即多维列表的元素值也是一个列表,只是维度比父列表小一。例如:定义1个二维列表。list2=[["CPU","内存"],["硬盘","声卡"]]二维列表比一维列表多一个索引,可以如下获取元素:列表名[索引1][索引2]例如:定义3行6列的二维列表,打印出元素值。77张三908070李四998977王五998977定义多维列表rows=3cols=6matrix=[[0forcolinrange(6)]forrowinrange(rows)]#列表生成式foriinrange(rows):forjinrange(cols):matrix[i][j]=i*3+jprint(matrix[i][j],end=",")print('\n')>>>print[x*xforxinrange(1,11)][1,4,9,16,25,36,49,64,81,100]78[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]]列表生成式列表生成式(ListComprehensions)是Python内置的一种极其强大的生成list列表的表达式。如果要生成一个list[1,2,3,4,5,6,7,8,9]可以用range(1,10):>>>L=list(range(1,10))

#L是[1,2,3,4,5,6,7,8,9]可是,如果要生成[1*1,2*2,3*3,...,10*10],可以使用循环:>>>L=[]>>>forxinrange(1,10):L.append(x*x)>>>L#[1,4,9,16,25,36,49,64,81]而列表生成式,可以用一句代替以上的繁琐循环来完成上面的操作:>>>[x*xforxinrange(1,11)][1,4,9,16,25,36,49,64,81,100]79列表生成式80生成所有的扑克牌的列表>>>color=["草花","方块","红桃","黑桃"]>>>rank=["A","1","2","3","4","5","6","7","8","9","10","J","Q","K"]>>>print([m+nformincolorforninrank])formincolor

forninrank

l.append(m+n)['草花A','草花1','草花2','草花3','草花4','草花5','草花6','草花7','草花8','草花9','草花10','草花J','草花Q','草花K','方块A','方块1','方块2','方块3','方块4','方块5','方块6','方块7','方块8','方块9','方块10','方块J','方块Q','方块K','红桃A','红桃1','红桃2','红桃3','红桃4','红桃5','红桃6','红桃7','红桃8','红桃9','红桃10','红桃J','红桃Q','红桃K','黑桃A','黑桃1','黑桃2','黑桃3','黑桃4','黑桃5','黑桃6','黑桃7','黑桃8','黑桃9','黑桃10','黑桃J','黑桃Q','黑桃K']8182Python列表内置函数和方法832.4.2元组Python的元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组使用小括号(),列表使用方括号[]。元组中的元素类型也可以不相同。1.创建元组tup1=('中国','美国',1997,2000)tup2=(1,2,3,4,5)tup3="a","b","c","d"2.访问元组tup1=('中国','美国',1997,2000)tup2=(1,2,3,4,5,6,7)print("tup1[0]:",tup1[0])#输出元组的第一个元素print("tup2[1:5]:",tup2[1:5])#切片,输出从第二个元素开始到第五个元素print(tup2[2:])843.元组连接元组中的元素值是不允许修改的,但可以对元组进行连接组合,实例如下:tup1=(12,34,56)tup2=(78,90)#tup1[0]=100 #修改元组元素操作是非法的。tup3=tup1+tup2 #连接元组,创建一个新的元组print(tup3)以上实例输出结果:(12,34,56,78,90)4.删除元组元组中的元素值是不允许删除的,但可以使用del语句来删除整个元组。85元组与列表转换可以使用下面方法将元祖转换为列表:列表对象=list(元组对象)tup=(1,2,3,4,5)list1=list(tup) #元组转为列表print(list1) #返回[1,2,3,4,5]可以使用下面方法将列表转换为元祖:元组对象=tuple(列表对象)nums=[1,3,5,7,8,13,20]print(tuple(nums)) #列表转为元组,返回(1,3,5,7,8,13,20)862.4.3字典Python字典(dict)是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等。字典也被称作关联数组或哈希表。1.创建字典键值对key-value一个简单的字典实例:dict={'zhangsan':91,'wangwu':80}也可如此创建字典:dict1={'abc':456};dict2={'abc':123,98.6:37};872.4.3字典2.访问字典里的值访问字典里的值时把相应的键放入方括号里,如下实例:dict={'Name':'王海','Age':17,'Class':'计算机一班'}print("dict['Name']:",dict['Name'])print("dict['Age']:",dict['Age'])3.修改字典dict={'Name':'王海','Age':17,'Class':'计算机一班'}dict['Age']=18 #更新键/值对(updateexistingentry)dict['School']="中原工学院" #增加新的键/值对(addnewentry)print("dict['Age']:",dict['Age'])print("dict['School']:",dict['School'];882.4.3字典4.删除字典元素del语句允许使用键从字典中删除元素(条目)。clear()方法清空字典所有元素。显示删除一个字典用del命令,如下实例:dict={'Name':'王海','Age':17,'Class':'计算机一班'}deldict['Name'] #删除键是'Name'的元素(条目)dict.clear() #清空词典所有元素deldict #删除词典,用del后字典不再存在892.4.3字典5.in运算字典里的in运算用于判断某键是否在字典里,对于value值不适用。功能与has_key(key)方法相似。dict={'Name':'王海','Age':17,'Class':'计算机一班'}print('Age'indict) 6.获取字典中的所有值dict1.values()以列表返回字典中的所有值。dict={'Name':'王海','Age':17,'Class':'计算机一班'}print(dict.values())dict1.keys()以列表返回一个字典所有的键。902.4.3字典5.in运算字典里的in运算用于判断某键是否在字典里,对于value值不适用。功能与has_key(key)方法相似。dict={'Name':'王海','Age':17,'Class':'计算机一班'}print('Age'indict) 6.获取字典中的所有值dict1.values()以列表返回字典中的所有值。dict={'Name':'王海','Age':17,'Class':'计算机一班'}print(dict.values())dict1.keys()以列表返回一个字典所有的键。912.4.4集合集合(set)是一个无序不重复元素的序列。集合基本功能是进行成员关系测试和删除重复元素。1.创建集合可以使用大括号({})或者set()函数创建集合,注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典。s1=set("hello") #利用字符串创建字典print(s1) #输出{'l','h','o','e'},因为是无序的,不重复元素print(type(s1)) #输出<class'set'>s2=set([3,5,9,10]) #创建一个数值集合student={'Tom','Jim','Mary','Tom','Jack','Rose'}print(student) #输出集合,重复的元素被自动去掉score=[12,34,11,12,15,34]s2=set(score) #{34,11,12,15}922.4.4集合2.成员测试由于集合本身是无序的,所以不能对集合进行索引或切片操作,只能循环遍历,或者使用in、notin来判断集合元素存在/不存在。if('Rose'instudent):print('Rose在集合中')else:print('Rose不在集合中')93集合运算可以使用“-”、“|”、“&”运算符进行集合的差集、并集、交集运算。#set可以进行集合运算a=set('abcd')#a={'a','b','c','d'}b=set('cdef')print(a)print("a和b的差集:",a-b)#a和b的差集{'a','b'}print("a和b的并集:",a|b)#a和b的并集{'a','b','c','d','e'}print("a和b的交集:",a&b)#a和b的交集{'c','d'}print("a和b中不同时存在的元素:",a^b)#a和b中不同时存在的元素942.4.4集合4.集合中添加元素add()方法向集合内增加元素,如果添加的元素已经存在的话,则不执行任何操作。s1=set(("Google","baidu","Taobao"))s1.add("Facebook")print(s1)#输出{'Taobao','Facebook','Google','baidu'}952.4.4集合5.删除集合元素remove(x)方法将元素x从集合s中移除,如果元素不存在,则会发生KeyError错误。s1=set(("Google","baidu","Taobao"))s1.remove("baidu")print(s1)#输出{'Taobao','Google'}还可以使用pop()方法从集合中删除并且返回一个任意的值。s1=set(("Google","baidu","Taobao"))a=s1.pop()#返回一个任意的值,如'baidu'b=s1.pop()#返回一个任意的值,如'Taobao'6.删除集合所有元素clear()方法删除集合中所有的元素。s1=set(("Google","baidu","Taobao"))s1.clear()#空集合962.4.4集合97ASCII码表h是

0110

1000e是

0110

0101A010000016598第3章Python控制语句3.1选择结构三种基本程序结构中的选择结构,可用if语句、if…else语句和if…elif…else语句实现。if语句的语法形式如下所示:if表达式:

语句1#比较输入的整数是否大于6a=input("请输入一个整数:")#取得一个字符串a=int(a)#将字符串转换为整数ifa>6:print(a,"大于6")【例3-1】输入一个年份,判断是否为闰年。闰年的年份必须满足以下两个条件之一:(1)能被4整除,但不能被100整除的年份都是闰年。(2)能被400整除的年份都是闰年。分析:设变量year表示年份,判断year是否满足条件(1)的逻辑表达式是:year%4==0andyear%100!=0条件(2)的逻辑表达式是:year%400==0两者取“或”,即得到判断闰年的逻辑表达式为:(year%4==0andyear%100!=0)oryear%400==0【例3-1】输入一个年份,判断是否为闰年。闰年的年份必须满足以下两个条件之一:(1)能被4整除,但不能被100整除的年份都是闰年。(2)能被400整除的年份都是闰年。分析:设变量year表示年份,判断year是否满足条件(1)的逻辑表达式是:year%4==0andyear%100!=0条件(2)的逻辑表达式是:year%400==0两者取“或”,即得到判断闰年的逻辑表达式为:(year%4==0andyear%100!=0)oryear%400==0if…else语句的语法形式如下所示:if表达式:

语句1else:

语句23.1.2if…else语句a=input("请输入一个整数:")#取得一个字符串a=int(a)#将字符串转换为整数ifa>6:print(a,"大于6")else

:print(a,"小于等于6")if表达式1:

语句1elif表达式2:

语句2

……elif表达式n:

语句nelse:

语句n+13.1.3if…elif…else语句多分支例题【例题】输入学生的成绩score,按分数输出其等级:score≥90为优,90>score≥80为良,80>score≥70为中等,70>score≥60为及格,score<60为不及格。score=int(input(“请输入成绩”))#int()转换字符串为整型ifscore>=90:print("优")elifscore>=80:print("良")elifscore>=70:print("中")elifscore>=60:print("及格")else:print("不及格")3.2.1while语句while判断条件:

执行语句3.2循环结构count=0whilecount<9:print('Hello')count=count+1print("Goodbye!")print('Hello')print('Hello')print('Hello')print('Hello')print('Hello')print('Hello')print('Hello')print('Hello')print('Hello')print("Goodbye!")HelloHelloHelloHelloHelloHelloHelloHelloHelloGoodbye!3.2.1while语句while判断条件:

执行语句3.2循环结构count=0whilecount<9:

print('Thecountis:',count)count=count+1print("Goodbye!")Thecountis:0Thecountis:1Thecountis:2Thecountis:3Thecountis:4Thecountis:5Thecountis:6Thecountis:7Thecountis:8Goodbye!累加和【例题】求1+2+3+…+100。分析:计算累加和需要两个变量,变量sum存放累加和,变量counter存放加数。重复将加数counter加到sum中。程序代码:sum=0counter=1whilecounter<=100:sum=sum+countercounter+=1print("1到100之和为:",sum)3.2.2for语句for语句可以遍历任何序列的项目,如一个列表、元祖或者一个字符串。1.for循环的语法for循环的语法格式如下:for循环索引值in序列

循环体for循环把字符串中字符遍历出来。forletterin'Python':#第一个实例print('当前字母:',letter)for循环把列表中元素遍历出来。fruits=['banana','apple','mango']forfruitinfruits:#第二个实例print('元素:',fruit)print("Goodbye!")程序运行结果:当前字母:P当前字母:y当前字母:t当前字母:h当前字母:o当前字母:n元素:banana元素:apple元素:mangoGoodbye!计算1~10的整数之和,可以用一个sum变量做累加。程序代码:sum=0for(x=1;x<=10;x++)forxin[1,2,3,4,5,6,7,8,9,10]:sum=sum+xprint(sum)Python提供一个range()内置函数,可以生成一个整数序列。range(1,101)就可以生成1~100的整数序列,计算1~100的整数之和如下:sum=0forxinrange(1,101):sum=sum+xprint(sum)foriinrange(26):print(chr(ord("a")+i),end=",")abcdefghijklmnopqrstuvwxyz

字母的ASCII编码是连续的3.2.2for语句2.通过索引循环对于一个列表,另外一种执行循环的遍历方式是通过索引(元素下标)。实例如下:fruits=['banana','apple','mango']foriinrange(len(fruits)):#

fori

in[0,1,2]:print('当前水果:',fruits[i])print("Goodbye!")3.2.3continue和break语句break语句在while循环和for循环中都可以使用,一般放在if选择结构中,一旦break语句被执行,将使得整个循环提前结束。素数n=55math.sqrt(n)i=2,3,4,5,……,n-1whilei<=n-1:ifn%i==0:breaki=i+1ifi==n:print“is”continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。sum=0forxin[1,2,3,4,5,6,7,8,9,10]:

ifx%2==0:break

sum=sum+xprint(sum)3.2.4循环嵌套Python语言允许在一个循环体里面嵌入另一个循环。如在while循环中可以嵌入for循环;也可以在for循环中嵌入while循环。嵌套层次一般不超过3层,以保证可读性。【例3-6】打印九九乘法表。【例3-7】使用嵌套循环输出2~100之间的素数。3.3常用算法及应用实例累加与累乘【例3-8】求自然对数e的近似值,近似公式为:e=1+1/1!+1/2!+1/3!+...+1/n!求最大数和最小数求数据中的最大数和最小数的算法是类似的,可采用“打擂”算法。【例3-9】求区间[100,200]内10个随机整数中的最大数。枚举法枚举法又称为穷举法,此算法将所有可能出现的情况一一进行测试,如计算“百钱买百鸡”问题3.3常用算法及应用实例递推与迭代1.递推利用递推算法或迭代算法,可以将一个复杂的问题转换为一个简单过程的重复执行。这两种算法的共同特点是,通过前一项的计算结果推出后一项。不同的是,递推算法不存在变量的自我更迭,而迭代算法则在每次循环中用变量的新值取代其原值。【例3-12】输出斐波那契(Fibonacci)数列的前20项即1,1,2,3,5,8,…。递推与迭代2.迭代迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。【例3-14】迭代法求a的平方根。求平方根的公式为:

xn+1=(xn+a/xn)/2,求出的平方根精度是前后项差绝对值小于10-5。游戏初步——猜单词游戏【案例】游戏初步——猜单词游戏。计算机随机产生一个单词,打乱字母顺序,供玩家去猜。

欢迎参加猜单词游戏

把字母组合成一个正确的单词.乱序后单词:yaes请你猜:easy真棒,你猜对了!是否继续(Y/N):y乱序后单词:diufctlfi请你猜:difficutl对不起不正确.继续猜:difficult真棒,你猜对了!是否继续(Y/N):n第4章Python函数与模块4.1函数的定义和使用在Python程序开发过程中,将完成某一特定功能并经常使用的代码编写成函数,放在函数库(模块)中供大家选用,在需要使用时直接调用,这就是程序中的函数。def函数名(函数参数):

函数体

return表达式或者值def

printHello(): #打印'hello'字符串print('hello')

def

printNum(): #输出0--9数字foriinrange(0,10):print(i)return

defadd(a,b): #实现两个数的和returna+bdefadd(a,b):returna+bprint(add(1,2))【例4-1】编写函数实现最大公约数算法,通过函数调用代码实现求最大公约数。4.1.2函数的使用lambda表达式可以用来声明匿名函数,即没有函数名字的临时使用的小函数,只可以包含一个表达式,且该表达式的计算结果为函数的返回值,不允许包含其他复杂的语句,但在表达式中可以调用其他函数。例如:f=lambdax,y,z:x+y+zprint(f(1,2,3))等价于定义:deff(x,y,z):returnx+y+zprint(f(1,2,3))函数使用return返回值,也可以将Lambda表达式作为函数的返回值。最后需要补充一点:Python中函数是可以返回多个值的,如果返回多个值,会将多个值放在一个元组或者其他类型的集合中来返回。4.1.3lambda表达式deff(x,y,z):returnx+y+zprint(f(1,2,3))函数使用return返回值,也可以将Lambda表达式作为函数的返回值。最后需要补充一点:Python中函数是可以返回多个值的,如果返回多个值,会将多个值放在一个元组或者其他类型的集合中来返回。4.1.4函数的返回值defdemo(s):result=[0,0]forchins:if'a'<=ch<='z':result[1]+=1

elif'A'<=ch<='Z':result[0]+=1returnresult #返回列表print(demo('aaaabbbbC'))4.2.1函数形参和实参的区别形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数。实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数。例如:#这里的a和b就是形参defadd(a,b):returna+b#下面是调用函数add(1,2) #这里的1和2是实参4.2函数参数在Python中参数传递采用的是值传递,这个和C语言有点类似。对于绝大多数情况下,在函数内部直接修改形参的值不会影响实参。4.2.2参数的传递defaddOne(a):a+=1print(a) #输出4a=3addOne(a)print(a) #输出3在有些情况下,可以通过特殊的方式在函数内部修改实参的值。4.2.2参数的传递defmodify1(m,K):m=2K=[4,5,6]returndefmodify2(m,K):m=2K[0]=0#同时修改了实参的内容return#主程序n=100L=[1,2,3]modify1(n,L)print(n,L)modify2(n,L)4.2.3函数参数的类型在Python中函数参数定义和传递的方式相比而言就灵活多。1.默认值参数在于它能够给函数参数提供默认值。def

display(a='hello',b='red'):print(a+b)#主程序display()display(b=‘world’,a=“qqq”)display(a='china')display('world')4.2.3函数参数的类型2.关键字参数避免了用户需要牢记位置参数顺序的麻烦。defdisplay(a,b):print(a)print(b)下面2句达到的效果是相同的。display(a='world',b='hello')display(b='hello',a='world')4.2.3函数参数的类型3.任意个数参数一般情况下我们在定义函数时,函数参数的个数是确定的,然而某些情况下我们是不能确定参数的个数的,比如要存储某个人的名字和它的小名,某些人小名可能有2个或者更多个,此时无法确定参数的个数,只需在参数前面加上'*'或者'**'。def

storename(name,*nickName):print('realnameis%s'%name)forninnickName:print('小名',n)#主程序storename('张海')storename('张海','小海')storename('张海','小海','小豆豆')'*'和'**'表示能够接受0到任意多个参数,'*'表示将没有匹配的值都放在同一个元组中,'**'表示将没有匹配的值都放在一个字典中。4.2.4变量的作用域1.局部变量在函数内定义的变量只在该函数内起作用,称为局部变量。deffun():x=3count=2whilecount>0:print(x)count=count-1fun()print(x) #错误4.2.4变量的作用域2.全局变量还有一种变量叫做全局变量,它是在函数外部定义的,作用域是整个程序。全局变量可以直接在函数里面使用,但是如果要在函数内部改变全局变量值,必须使用global关键字进行声明。x=2 #全局变量deffun1():print(x,end="")deffun2():globalx #在函数内部改变全局变量值必须使用global关键字

x=x+1print(x,end="")fun1()fun2()print(x,end="")4.3闭包和函数的递归调用4.3.1闭包(closure)在Python中,闭包指函数的嵌套。可以在函数内部定义一个嵌套函数。def

func_lib():

defadd(x,y):returnx+yreturnadd#返回函数对象

fadd=func_lib()print(fadd(1,2))4.3.2函数的递归调用1.递归调用函数在执行的过程中直接或间接调用自己本身,称为递归调用。Python语言允许递归调用。def

fac(x):ifx==1: #递归调用结束的条件

return1else:

return(fac(x-1)*x) #调用fac()函数本身print(fac(5))4.3.2函数的递归调用2.递归调用的执行过程递归调用的执行过程分为递推过程和回归过程两部分。4.4内置函数内置函数(built-infunctions)又称系统函数,或内建函数,是指Pyth

温馨提示

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

评论

0/150

提交评论