Python机器学习 第2版 课件全套 郭羽含 第1-13章 Python语言基础 -综合案例-医学图像分割_第1页
Python机器学习 第2版 课件全套 郭羽含 第1-13章 Python语言基础 -综合案例-医学图像分割_第2页
Python机器学习 第2版 课件全套 郭羽含 第1-13章 Python语言基础 -综合案例-医学图像分割_第3页
Python机器学习 第2版 课件全套 郭羽含 第1-13章 Python语言基础 -综合案例-医学图像分割_第4页
Python机器学习 第2版 课件全套 郭羽含 第1-13章 Python语言基础 -综合案例-医学图像分割_第5页
已阅读5页,还剩747页未读 继续免费阅读

下载本文档

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

文档简介

Machine

Learning

with

Python1.1目录1.21.3Python概述Python变量与简单数据类型Python程序结构1.4案例——人机对话猜数1.5延伸阅读——开源编程Python概述本节介绍Python的产生与发展、Python的特点、Python的应用领域和PyCharm1.13

Python的产生Python语言起源于1989年年末。Guido从高级教学语言ABC(AllBasicCode)中汲取了大量语法,并从系统编程语言Modula-3借鉴了错误处理机制,从而开发了命名为Python的新脚本解释程序。Python的发展Python语言产生后,于1991年年初以开源方式公开发行第一个版本Python1.0。2000年10月发布了Python2.0,增加了许多新的语言特性。2008年12月发布了Python3.0,该版本在语法上有较大变化。Python3.x的设计理念更加合理、高效和人性化,代码开发和运行效率更高。Python官方于2019年9月宣布,2020年1月1日起停止对Python2.x的维护和更新。所以,使用Python2.x系列的用户应尽快转换成3.x并且选择较高的版本。1.1.1Python简介Python的产生与发展4

1.1.1

Python简介1)简单易学。Python语法结构简单,遵循优雅、明确、简单的设计理念,易学、易读、易维护。2)解释型语言。Python解释器将源代码转换成Python的字节码,由Python虚拟机逐条执行字节码指令,即可完成程序的执行,用户不再担心如何编译、链接是否正确等,使得Python更加简单方便。3)面向对象。Python既支持面向过程的编程又支持面向对象的编程,支持灵活的程序设计方式。4)免费和开源。Python是FLOSS(自由/开放源码软件)之一。简单地说,用户可以自由地发布这个软件的副本,阅读和更改其源代码,并可将它的一部分用于新的自由软件中。5)跨平台和可移植性。由于Python的开源特性,经过改动,Python已经被移植到Windows、Linux、MacOS、Android等不同的平台上工作。6)丰富的标准库。除了Python官方提供的非常完善的标准库外,还具有丰富的第三方库,有助于处理各种工作,包括输入/输出、文件系统、数据库、网络编程、图形处理、文本处理等,供开发者直接调用,省去编写大量代码的过程。7)可扩展性和可嵌入性。如果用户需要让自己的一段关键代码运行更快,或者是编写一些不愿开放的算法,则可以将那部分程序用C/C++编写,然后在Python程序中调用它们。同样,用户可以把Python嵌入到C/C++程序中,为程序用户提供脚本功能。Python的特点5

1.1.1Python简介1)操作系统管理与维护。Python提供API(ApplicationProgrammingInterface应用程序编程接口)可以方便地对操作系统进行管理和维护。2)科学计算与数据可视化。Python提供了很多用于科学计算与数据可视化的模块,如NumPy、SciPy、Matplotlib等,可实现科学计算、二维图表、三维数据可视化、三维动画演示、图像处理以及界面设计等应用领域。3)图形用户界面(GUI)开发。Python支持GUI开发,可以使用Tkinter、wxPython、PyQt库开发各种跨平台的桌面软件。4)文本处理。Python提供的re模块能支持正则表达式,还提供SGML、XML分析模块,可以利用Python开发XML程序。5)网络编程及Web开发。Python提供的Socket模块对Socket接口进行了二次封装,支持Socket接口的访问,以支持网络编程。Python还提供了urllib、cookielib、httplib、scrap等大量模块用于对网页内容进行读取和处理,并结合多线程编程以及其他有关模块可以快速实现Web应用开发。Python还支持Web网站开发,搭建Web框架,目前比较流行的开发框架有Web2Py、Django等。6)数据库编程。Python提供了支持所有主流关系数据库管理系统的接口DB-API(数据库应用程序编程接口)规范的模块,用于与SQLite、MySQL、SQLServer、Oracle等数据库通信。另外,Python自带一个Gadfly模块,提供了完整的SQL环境。7)游戏开发。Python在网络游戏开发中得到广泛应用。Python提供的Pygame模块可以在Python程序中创建功能丰富的游戏和多媒体程序。Python的应用领域6

1.1.2

Python开发环境搭建Python的下载与安装从Python官网下载Python安装包。例如,选择Windows环境的安装包,网址为“/downloads/windows/”,运行界面如图1-1a所示,下载最新版Python3.7.4安装包,如图1-1b所示,可根据需要选择下载32位、64位安装包。

a)

图1-1Python安装包下载b)

7

1.1.2

Python的安装与配置Python3.7.4安装包下载后即可开始安装,以64位系统为例,安装过程如下:开始安装Python。双击安装包文件,安装向导界面如图1-2所示,选中“AddPython3.7toPATH”复

选框,以配置Python运行路径。定制安装。单击图1-2中的“Customizeinstallation”选项,选择特性界面如图1-3所示,此时不需做任何修改,直接单击“Next”按钮。设置高级选项。根据需要设置“AdvancedOptions”,如设置Python安装路径等,如图1-4所示,单击“Install”按钮开始安装,安装进度如图1-5所示。安装完成。安装成功界面如图1-6所示,单击“Close”按钮结束安装。Python3.7.4程序组如图1-7所示。图1-2定制安装Python8

图1-3Python选定特性设置图1-4Python高级选项设置图1-5Python安装进行中图1-6Python成功安装

9

图1-7Python3.7程序组10

1.1.2

Python的安装与配置

系统环境变量的设置Windows中添加环境变量有以下方法。

安装时直接添加。安装Python系统时选中图1-2中“AddPython3.7toPATH”复选框,则系统自动将安装路径添加到环境变量Path中。安装后手动添加。如果安装时未选中图1-2中“AddPython3.7toPATH”复选框,则可在安装完成后手动添加。其方法如下(操作过程如图1-8所示)。图1-8手动添加Python环境变量11

1.1.2

Python的安装与配置

Python运行Python安装完成后,可以选择图1-7中“Python3.7(64-bit)”启动Python解释器,也可以选择图1-7中“IDLE(Python3.764-bit)”启动Python集成开发环境IDLE。Python解释器启动后,可以直接在其提示符(>>>)后输入语句。例如,在提示符>>>后输入一个输出语句print("HelloPython!"),下一行直接解释运行输出“HelloPython!”,不需编译直接解释运行,如图1-9所示。与直接运行Python解释器相似,IDLE同样输出“HelloPython!”,如图1-10所示。图1-9Python3.7.4解释器运行窗口图1-10Python3.7.4IDLE运行窗口12

1.1.2

Python的安装与配置

JupyterNoteBook下载与安装可以从官网“/distribution/#download-section”(如图1-11所示)选择合适系统(如Windows系统)下合适的版本(如Python3.7version)下载,然后运行安装文件“Anaconda3-2019.07-Windows-x86_64.exe”,按提示步骤完成安装即可,安装完成后的程序组如图1-12所示。图1-11Anaconda下载界面图1-12Anaconda程序组13

1.1.2Python的安装与配置

JupyterNoteBook运行单击图1-10中的JupyterNoteBook项启动JupyterNoteBook。启动JupyterNoteBook会打开一个网页,在该网页右上角单击菜单“New”,选择“Python3”(如图1-13所示),即打开一个新窗口,可以在该窗口中编写和运行Python代码,如图1-14所示,另外,还可以选择“File->Downloadas”命令将当前代码及运行结果保存为不同形式的文件,方便以后学习和演示,如图1-15所示。图1-13JupyterNoteBook运行界面

图1-15JupyterNoteBook代码和运行结果保存不同形式图1-14JupyterNoteBook运行Python程序14

1.1.2

Python的安装与配置

Pycharm下载与安装PyCharm官方下载网址为“/pycharm/download/”,提供Professional(专业版)和Community(社区版,免费开源版本)两个版本的PyCharm供用户选择安装。下面以Windows环境下安装PyCharmCommunity版为例。安装初始界面。运行下载的PyCharm安装包文件“pycharm-community-2019.2.2.exe”,进入欢迎界面,如图1-16所示,单击“Next”按钮。设置安装路径。选择安装位置,如图1-17所示。设置后单击“Next”按钮。设置安装选项。可指定建立快捷方式及指定是否与“.py”文件关联,如图1-18所示,设置后单击“Next”按钮。设置开始菜单文件夹。如图1-19所示,设置后单击“Next”按钮,安装进度如图1-20所示,完成后单击“Next”按钮。PyCharm安装完成。如图1-21所示,单击“Finish”按钮完成安装。图1-16PyCharm安装欢迎界面

15

图1-17PyCharm安装目录设置图1-18PyCharm安装选项设置图1-19PyCharm开始菜单文件夹设置图1-20PyCharm安装进度

16

图1-21PyCharm安装完成17

1.1.2

Python的安装与配置

PyCharm运行选择“开始->所有程序->JetBrains->JetBrainsPyCharmCommunityEdition2019.2.2”启动PyCharm,其运行窗口如图1-22所示。可以新建Python源程序文件,输入源程序并调试运行等一系列操作。注意,PyCharm初始运行界面为黑色背景,若需要改变背景颜色为其他颜色(如白色,如图1-22所示),可以单击“File->Setting...”选项,弹出“Settings”对话框,选择“Editor->ColorScheme->ConsoleColors”选项,将“Scheme:”设置为“Default”选项,背景即变为白色,如图1-23所示。图1-22PyCharm运行窗口图1-23设置PyCharm运行窗口的背景颜色18

1.1.3Python程序基本编写方法

交互式(命令行方式)进入Python交互式的方法有以下两种:从命令行窗口启动Python。选择Windows开始菜单,在“搜索程序和文件”框中输入cmd<Enter>(<Enter>表示按Enter键,下同),启动命令行窗口,在命令行窗口中输入Python<Enter>,进入Python交互式解释器,如图1-9所示。此时用户可以在提示符>>>下输入Python命令或调用函数,以命令行方式交互式地使用Python解释器。从Python程序组启动Python。选择Windows开始菜单下的Python程序组(如图1-7所示),单击其中的“Python3.7(64-bit)”或“IDLE(Python3.764-bit)”菜单项均可启动Python交互式解释器,如图1-10所示。19

1.1.3Python程序基本编写方法

脚本式(源程序文件方式)在交互方式下输入Python代码虽然方便,但是这些语句不能保存,无法重复执行或留作将来使用。因此,Python提供源程序文件方式,用户可以使用记事本、集成开发工具(IDLE、PyCharm等)编写源代码,并将源程序保存成扩展名为“.py”的Python脚本“.py”文件,然后在Python的命令行方式下输入如下语句执行该脚本文件,同样可以得到运行结果。pythonfilename.py其中,filename是源程序文件名。20

1.1.3Python程序基本编写方法【例1-2】编写程序并保存为脚本文件,文件名为“example1_2.py”。程序实现功能:在屏幕上分两行输出“HelloPython!”和“欢迎使用Python!”。1)用记事本等文本编辑器(注意不能使用MSWord等字处理软件)编写程序源代码,内容如下。文件以“example1_2.py”命名保存在“d:\python311”文件夹下。

#example1_2.py

#encoding:UTF-8

print("HelloPython!")#在屏墓上输出“He1lo.Python!”

print("欢迎使用Pyhton!")#在屏幕上输出“欢迎使用Python!”

启动命令提示符窗口运行该源程序文件,输入如下命令:

pythond:\python311\example1_2.py21

1.1.3Python程序基本编写方法【例1-3】编写程序,程序实现功能:求两个数之和。

【解】参考程序如下:

a=3 #给变量a赋值3

b=5 #给变量b赋值5

sum=a+b #求a,b之和,保存在sum中

print('a=',a,'b=',b,'sum=',sum) #输出a,b及sum的值

程序运行结果如下:

a=3b=5sum=822

1.1.3Python程序基本编写方法

Python帮助在Python中可以使用help()方法获取帮助信息。在IDLE的环境下获得Python帮助信息分为以下3种情况。获取内置函数和类型的帮助信息。为获得某个内置函数的帮助信息,则可以在提示符>>>后面直接输入:help(对象名)。例如,想获得内置函数sum的帮助信息,则在提示符后面输入help(sum),即可获得内置函数sum的帮助信息,如图1-28所示。获取模块中的成员函数信息。为获得某个模块中成员函数的帮助信息,则需先导入该模块,然后再输入:help(模块名.对象名)。例如,想获得math模块中的fabs成员函数帮助信息,则需先导入math模块,然后输入help(math.fabs),即可获得该函数的帮助信息,如图1-29所示。图1-28

Python内置函数sum帮助信息图1-29

math模块中fabs函数的帮助信息23

1.1.3Python程序基本编写方法

Python帮助获取整个模块的帮助信息。为获得整个模块的帮助信息,则需先导入该模块,然后输入:help(模块名)。例如,想获得math模块中所有的帮助信息,则需先导入math模块,然后输入help(math),即可获取整个模块的帮助信息,如图1-30所示。另外,Python提供了非常完善的Python帮助文档,在Python安装目录的doc文件夹下,文件名为“python374.chm”,双击即可打开,如图1-31所示。图1-30整个math模块中的帮助信息图1-31Python的帮助文档24

1.1.3Python程序基本编写方法

Python错误语法错误。语法错误是指不符合Python程序的语法规则,比如语句格式错、函数引用格式错等。Python解释器在程序执行过程会检测出程序存在的语法错误,并指出出错的一行,在最先找到的错误位置做出标记。逻辑错误。逻辑错误是指用户编写的程序已经没有语法错误,可以运行,但运行却得不到所期望的结果(或正确的结果)或者运行期间发生错误。Python错误与调试25

1.1.3Python程序基本编写方法

Python调试

Python调试方法主要有:可以通过Python解释器查找、定位语法错误。可以在Python程序的某些关键位置增加print语句显示直接出变量的值,从而确定程序执行到此处是否出错。这种方法简单、直接,但比较麻烦,因为开发人员必须在所有可疑的地方都插入输出语句,程序调试完成后,必须将这些输出语句全部清除。可以利用调试器(Debugger)调试程序以帮助程序员查找程序的逻辑错误。调试器的功能主要包括暂停程序执行、检查和修改变量、调用方法等,但调试器并不更改程序代码。程序员可以利用调试器分析被调试程序的数据,并监视程序的执行流程。IDLE、PyCharm等集成开发环境均提供了调试器帮助开发人员查找逻辑错误。DebugControl调试工具可以完成各种调试跟踪功能,其主要功能如表1-1所示。Python错误与调试26

1.1.3Python程序基本编写方法

DebugControl调试工具可以完成各种调试跟踪功能,其主要功能如表1-1所示。表1-1DebugControl调试工具主要功能功能名称功能使用说明执行说明Go直接运行代码到指定的断点处在源文件编程窗口中的指定代码行处,按鼠标右键设置SetBreakpoint,可以用ClearBreakpoint取消Step一次让程序执行一行代码,如果当前行是一个函数调用,则Debugger会跳进这个函数里面在DebugControl窗口上直接单击Step按钮Over让程序一次执行一行代码,如果当前行是一个函数调用,则Debugger不会跳进这个函数,而是直接得到其运行结果,并移动到下一行在DebugControl窗口上直接单击Over按钮Out当Debugger已进入某一个函数调用的时候,可以直接跳出这个函数;当未进入函数调用的时候(即在主程序中),则与Go作用相同在DebugControl窗口上直接单击Out按钮Quit退出调试过程在DebugControl窗口上直接单击Quit按钮Stack堆栈调用层次在DebugControl窗口上直接单击Stack复选框Locals查看局部变量在DebugControl窗口上直接单击Locals复选框Source跟进源代码在DebugControl窗口上直接单击Source复选框Globals查看全局变量在DebugControl窗口上直接单击Globals复选框27

1.1.3Python程序基本编写方法1)代码缩进。代码缩进是Python语法中的强制要求。Python源程序的代码之间的逻辑关系依赖于代码块的缩进。对于类定义、函数定义、选择结构,循环结构以及异常处理结构,行尾的冒号以及下一行的缩进表示一个代码块的开始,缩进结束则表示一个代码块结束。同一个级别的代码块的缩进量必须相同。在IDLE开发环境中,基本缩进单位默认为4个空格,也可以自定义基本缩进量,选择“Options->ConfigureIDLE”选项,在弹出的Settings对话框的“Fonts/Tabs”选项卡中设置基本缩进量2)适当的注释。注释是为增强代码可读性而添加的描述文字,对程序的执行没有任何影响。主要分为以下两类注释。单行注释:程序中的单行注释采用“#”开头,可以从任意位置开始,既可以在语句行末尾、也可以独立成行。多行注释:可以使用多个“#”开头进行多行注释,也可采用一对三引号将多行注释字符串括起来。3)清晰的模块导入。导入模块时每个import语句导入一个模块,尽量避免一次导入多个模块。4)代码过长折行处理。如果一行语句过长,可以考虑拆分成多个短一些的语句,以保证代码具有较好的可读性。也可以在行尾使用续行符“\”来表示下面紧接的一行仍属于当前语句,但一般建议使用圆括号来包含多行内容。5)必要的空格和空行。最好在每个类、函数定义和一段完整的功能代码之后增加一个空行,在运算符两侧各增加一个空格,逗号后面增加一个空格等,以增强程序的可读性。6)常量名中所有字母大写,由下划线连接各个单词,类名中首字母大写。变量和简单数据类型本节介绍Python的标识符变量,基本数据类型,数据运算符及表达式1.229

1.2.1

标识符和变量标识符标识符在不同的应用环境下有不同的含义,一般是用于标识某个实体的符号。在计算机编程语言中,标识符是命名变量、函数等名字的有效字符集合。在Python语言中,包、模块、类、函数、变量等的名称必须为合法有效的标识符。合法的标识符

在Python中,标识符可以包括英文字母、数字及下划线,但要符合以下规则。标识符必须以字母或下划线开始,不能以数字开始。标识符区分英文字母的大小写。标识符中不能出现分隔符、标点符号或运算符。标识符不能使用关键字。最好不要使用内置模块名、类型名、函数名、已经导入的模块名及其成员名作为标识符。例如,a_int、c_float、_strname为正确的标识符;而100int、yes=no、or为错误的标识符。30

关键字

关键字是预定义的保留标识符。关键字有特殊的固定语法含义,不能在程序中被用户定义为普通标识符,否则将会产生编译错误。Python3的关键字如表2-1所示。下划线标识符通常以下划线起始的标识符具有特殊意义。以单下划线起始(_xxx)的标识符代表不能直接访问的类属性,需要通过类提供的接口进行访问,不能用“fromxxximport*”导入。以双下划线起始(__xxx)的标识符代表类的私有成员。以双下划线起始和结尾(__xxx__)的标识符代表Python中特殊方法专用的标识,如__init__代表类的构造函数。表2-1Python3关键字FalseNoneTrueandasassertasyncawaitbreakclasscontinuedefdelelifelseexceptfinallyforfromglobalifimportinislambdanonlocalnotorpassraisereturntrywhilewithyield31

变量和常量

Python3的对象可分为不可变对象(immutable)和可变对象(mutable)。不可变对象一旦创建,其值在运行中不能被修改,可变对象的值在运行中可以被修改。Python程序中表示数据的量可以分为两种:常量(不可变对象)和变量(可变对象)。常量常量是指在程序执行过程中,其值不能发生改变的量,如3、-6、35.8、"xyz"等。但Python语言不支持常量,即没有语法规则限制改变一个常量的值,Python语言只是使用约定,声明在程序运行中不会改变的变量即为常量,通常使用全部大写字母(也可使用下划线增加可读性)表示常量名。例如,定义PI为常量的语句:>>>PI=3.14。变量变量指在程序执行过程中,其值可以发生改变的量。变量用变量名标识,如x、a1、n等为合法的变量名。在Python中,不需要事先声明变量名及其类型,直接赋值使用即可根据变量的值自动创建各种类型的变量。例如,语句“n=5”的功能:Python根据整数对象5自动创建了整型变量n,n指向整型对象5,即n赋值为5。32

1.2.2

基本数据类型Python语言中提供了几种数据类型,包括数字(Number)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)和序列(Sequence)等,下面分别进行介绍。数字类型数字属于Python不可变对象,即修改变量值的时候并不是真的修改变量的值,而是先把值存放到内存单元中,然后修改变量使其指向了新的内存单元地址。Python中有4种不同的数字类型,分别是int(整型)、float(浮点型)、bool(布尔型)和complex(复数型)。整型整型数字就是没有小数部分的数值,包括正整数、0和负整数,且无大小限制。整数可以使用不同的进制来表示。十进制整数。没有前缀,其数码为0~9,如12、9810、-167。八进制整数。以0o作前缀,其数码为0~7,八进制整数通常为无符号数,如0o13、0o100、0o2019,其对应的十进制数分别为11、64和1031。十六进制整数。以0X或0x作前缀,其数码为0~9,A-F或a-f(代表10-15),如0XB4、0xF0、0x34D,其对应的十进制数分别为180、240和845。33

浮点型浮点型数字就是包含小数点的实数,如123.04、0.6789、-9.0909、56.3-e2、3.141e+18、-133.4e78等。布尔型布尔型是用来表示逻辑“是”、“非”的一种类型,只有两个值,True和False。关于布尔值,Python中规定:任何对象都可以用来判断其真假而用于条件、循环语句或逻辑运算中。对象判断中None、False、0值(0、0.0、0j)、空的序列值(''、[]、())、空的映射值{}都为False;其他对象值都为True。复数型复数由两部分组成:实部和虚部。复数的基本形式为:a+bj、a+bJ或complex(a,b)。其中,a是实部,b是虚部。如3.33j、-23-1.12j、-812.j、.156j、(9.19+3e-27j)、-3.12+0J、1.9+e-1j等。字符类型字符串是Python中最常用的数据类型,可以使用单引号、双引号或三引号来创建字符串。如'HelloWorld'、"Python"、'''Yes123'''等。34

序列、列表、元组、集合、字典序列序列是Python中一种最基本的数据结构,序列中每个元素都有一个与位置相关的序号,称为索引。通过索引可以访问序列元素,从而进行各种处理。列表列表是一种序列类型。用一对方括号“[]”将元素括起来,以逗号进行分隔。列表中元素的类型可以不相同。如[3,5,7.9]、['gkh','yuv',4]、[True,5,7,'cde']等。元组元组也是一种序列类型。用一对圆括号“()”将元素括起来,以逗号隔开,元素类型可相同也可不同。如(2,4,6)、(False,'abc',2)、('gkh','yuv',3.7)等。集合集合是无序但不重复元素的序列。用一对花括号“{}”将元素括起来,以逗号隔开,如{'Tom','Jim','Jack','Luse'}。字典字典是Python中唯一内建的映射类型,是一个无序的“键:值”对集合,可用来实现通过数据查找关联数据的功能。字典用大括号“{}”来表示,键和值之间用冒号隔开。如{'Jack':1134,'Tom':2310,'Luse':6617}。35

1.2.3运算符和表达式在计算机程序中,运算符是表示实现某种运算的符号。表达式是由运算符(操作符)和运算数(操作数)组成的式子,即操作数、运算符和圆括号按照一定规则连接起来组成表达式。运算符表示对操作数进行何种运算的符号,如+、-、*、/等运算。操作数包含常量、变量和函数等。表达式通过运算后产生运算结果,返回结果对象,运算结果对象的类型由操作数和运算符共同决定。下面分别介绍运算符、表达式及其相关知识。运算符Python语言支持以下类型的运算符:算术运算符、关系(比较)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。算术运算符算术运算符实现数学运算,其运算对象通常是数值型数据。Python中的算术运算符如表2-2所示,假设变量x为10,变量y为3。36

算术运算符算术运算符实现数学运算,其运算对象通常是数值型数据。Python中的算术运算符如表1-2所示,假设变量x为10,变量y为3。表1-2算术运算符运算符示例功能描述运行结果+(加)x+yx与y相加13-(减)x-yx与y相减7*(乘)x*yx与y相乘30/(除)x/yx除以y3.3333333333333335//(整除)x//yx整除y,返回x/y的整数部分3%(模)x%yx整除y的余数,即x-(x//y)*y的值1-(负号)-xx的负数-10+(正号)+xx的正数10**(乘方)x**yx的y次幂100037

关系运算符

关系运算符用于对两个值进行比较,即对两个操作数对象的大小关系进行判断,运算结果为True(真)或False(假)。Python中的关系运算符如表1-3所示,假设变量x为10,变量y为20。表1-3比较运算符运算符示例功能描述运行结果==(等于)x==y比较两个对象是否相等False!=(不等于)x!=y比较两个对象是否不相等True>(大于)x>y返回x是否大于yFalse<(小于)x<y返回x是否小于yTrue>=(大于等于)x>=y返回x是否大于或等于yFalse<=(小于等于)x<=y返回x是否小于或等于yTrue38

赋值运算符赋值运算要求左操作数对象必须是值可以修改的变量。Python中的赋值运算符如表1-4所示。表1-4赋值运算符运算符示例功能描述=y=x将x的值赋给变量y+=y+=x等价于y=y+x-=y-=x等价于y=y-x*=y*=x等价于y=y*x/=y/=x等价于y=y/x//=y//=x等价于y=y//x%=y%=x等价于y=y%x**=y**=x等价于y=y**x39

逻辑运算符逻辑运算符可以将多个关系运算连接起来,形成更复杂的条件判断。逻辑运算的运算结果为True(真)或False(假)。Python中的逻辑运算符如表1-5所示。如变量值为数值型,则0被认为False,其余值均被认为True。表1-5逻辑运算符运算符示例功能描述运行结果and(逻辑与)xandy如果x和y都为True,则返回True;否则,返回FalseTrueor(逻辑或)xory如果x和y都为False,则返回False;否则,返回TrueTruenot(逻辑非)notx如果x为True,则返回False;如果x为False,则返回TrueFalse40

位运算符位运算符只适用于整数,运算规则是将整数转换为二进制形式(注意采用补码表示),按最低位对齐,缺少的高位补0,然后对二进制数进行逐位运算,最后将得到的二进制数据再转换为十进制数。Python中的位运算符如表1-6所示。假设变量x为00000001,变量y为00111101。表1-6位运算符运算符示例功能描述十进制结果二进制结果&(按位与)y&x如果y和x对应位都为1,则结果中该位为1;否则,该位为0100000001|(按位或)y|x如果y和x对应位都为0,则结果中该位为0;否则,该位为16100111101^(按位异或)y^x如果y和x对应位不同,则结果中该位为1;否则,该位为06000111100<<(左移位)y<<x将y左移x位(右侧空出的低位补0)1220111

1010>>(右移位)y>>x将y右移x位(左侧空出的高位补符号位)3000011110~(按位取反)~x如果x的某位为1,则结果中该位为0;否则,该位为1-21111111041

注意:按位取反时最高位(通常为符号位)也一起变反,因此,正数按位取反后变成了负数(符号位0变为1),而负数按位取反后变成了正数(符号位1变为0)。因此,按位取反的运算规则是:~0=1,~1=0,对于一个整数x来说,~x=-(x+1)。例如:以8位二进制位为例计算~5。其计算过程如下:变换为二进制数:(5)10=(00000101)2。按位取反:~5=~(00000101)2=(11111010)2,最高位为1,因此它是一个负数的二进制补码形式。转换为十进数:(11111010)2其对应的原码是(00000110)2(转换原则:除符号位外其余各位变反,然后整体加1,得到该整数的原码),其对应的十进制整数为-6。成员运算符成员运算符用于判断一个可迭代对象(序列、集合或字典)中是否包含某个元素(成员)。Python中的成员运算符如表1-7所示。表1-7成员运算符运算符示例功能描述inxiny如果x是可迭代对象y的一个元素,则返回True;否则,返回Falsenotinxnotiny如果x不是可迭代对象y的一个元素,则返回True;否则,返回False42

身份运算符身份运算符用于比较两个对象的存储单元是否相同。Python中的身份运算符如表1-8所示。表达式表达式是将不同类型的数据(常量、变量、函数)用运算符按照一定的规则连接起来的式子。因此,表达式由值、变量和运算符等组成。在一个表达式中,Python会根据运算符的优先级和结合性进行运算。对于具有不同优先级的运算符,会先完成高优先级的运算,再完成低优先级的运算;对于具有相同优先级的运算符,其运算顺序由结合性来决定。结合性包括左结合和右结合两种,左结合是按照从左向右的顺序完成计算,如1+2+5被计算成(1+2)+5;而右结合是按照从右向左的顺序完成计算,如赋值运算符,即x=y=z被处理为x=(y=z)。前面所介绍的各运算符的优先级如表2-9所示。优先级值越小,表示优先级越高。表1-8身份运算符运算符示例功能描述isxisy如果x和y对应同样的存储单元,则返回True;否则,返回Falseisnotxisnoty如果x和y不对应同样的存储单元,则返回True;否则,返回False43

表1-9运算符优先级优先级运算符描述1**乘方2~、+、-按位取反、正号、负号3*、/、//、%乘、除、整除、模4+、-加、减5>>、<<右位移、左位移6&按位与7^按位异或8|按位或9>、<、>=、<=、==、!=、is、isnot、in、notin比较运算符、身份运算符、成员运算符10=、+=、-=、*=、/=、//=、%=、**=赋值运算符11not逻辑非12and逻辑与13or逻辑或前面所介绍的各运算符的优先级如表2-9所示。优先级值越小,表示优先级越高。程序结构本节主要介绍Python的顺序结构、分支结构以及循环结构1.345

1.3.1顺序结构顺序结构是程序设计中一种最简单的基本结构,它只需按照问题的处理顺序,依次写出相应的语句,按照语句出现的位置先后次序执行。顺序结构示意图如图1-1所示,依次顺序执行语句块1、语句块2、……、语句块n等不同的程序块。其中各语句块分别代表某些操作。

语句块1语句块2……语句块n图1-1顺序结构示意图46

1.3.1顺序结构

赋值语句赋值语句是任何程序设计语言中最基本的语句。赋值语句的作用就是将值赋给变量,或者说将值传送到变量所对应的存储单元中。Python中的赋值与一般程序设计语言的赋值含义不太一样,并不是将数据赋值给变量,而是变量指向某个数据值对象。一个变量通过赋值可以指向不同类型的对象。在Python中,通常将“=”称为赋值号。赋值语句的一般格式为:变量=表达式赋值号左边必须是变量,右边是表达式。赋值的意义是先计算右边表达式的值,然后使该变量指向该数据对象。例如:>>>a=2 #变量a赋值为2,即变量a指向数据对象2>>>b=5 #变量b赋值为5,即变量b指向数据对象5>>>a=b #变量a赋值为b的值(5),即变量a也同时指向数据对象547

Python是一种动态语言,不需要预先定义变量类型,变量类型在赋值时被初始化。例如:>>>a=3 #变量a赋值为整数3,同时指明变量a为整型变量>>>a='HELLO' #变量a赋值为字符串'HELLO',同时指明变量a为字符型变量Python中的赋值不是直接将值赋给变量,而是将数据对象的地址赋值给变量,并且赋值语句不存在返回值,“b=(a=6)+1”是错误的写法,应该写成>>>a=6>>>b=a+1链式赋值语句链式赋值语句的一般表达形式为:变量1=变量2=......=变量n=表达式等价于:变量n=表达式......变量1=变量248

例如:>>>a=b=c=d=8 #链式赋值>>>a,b,c,d #显示a,b,c,d的值(8,8,8,8) #a,b,c,d的值均为8同步赋值语句同步赋值语句的一般表达形式为:变量1,变量2,......,变量n=表达式1,表达式2,......,表达式n其中,赋值号左边变量的个数与右边表达式的个数要一致。先计算右边表达式的值,然后将各表达式的值赋值按位置给左边的变量。例如:>>>a,b=2,3 #变量a,b分别指向数据2,3>>>a,b #显示a,b的值(2,3)>>>a,a=2,3 #变量a先指向数据2,其后变量a又指向了数据3>>>a #显示a的值49

赋值表达式Python3.8中在赋值中引入了一个新的概念——赋值表达式,采用符号“:=”(称为海象运算符)进行赋值。赋值表达式可以在统一表达式中赋值并返回值,可以简化和优化程序代码。例如:>>>print(a:=2) #对变量a赋值2,同时输出2。功能等价于a=2,print(a)两条语句21.3.1顺序结构50

1.3.1顺序结构

程序可以通过键盘读取数据,也可以通过文件读取数据;程序的结果可以输出在屏幕上,也可以保存在文件中。而标准的输入是指通过键盘读取数据,标准的输出是指将结果显示在屏幕上。标准输入输出51

标准输入

Python的标准输入函数是input()函数,用于读取用户在键盘上输入的数据,并返回一个字符串。其调用格式为:input([字符串])其中,括号里面的“字符串”是可选项,等待用户输入数据时原样显示在屏幕上,一般用于提示用户输入数据,否则屏幕无任何提示信息显示,只等待用户输入数据。例如:

>>>a=input('请输入数据:')请输入数据:31 #屏幕提示:“请输入数据:”,并等待用户输入数据31

>>>a'31'#用户输入的数据自动默认为字符串input()函数会自动将输入的数据视为字符串,如果想要输入数值数据,则需使用类型转换函数将字符串转换为数值。例如:>>>b=int(input()) #将输入的用户数据转换为整型66>>>b6652

标准输出

Python语言的输出方式有两种,一种是直接使用表达式输出该表达式的值,另一种是使用表达式语句输出。直接使用表达式输出表达式的值。例如:>>>a,b=1,2>>>a+36 #输出表达式a+36的值37>>>b+1 #输出表达式b+1的值3a,b分别赋值为1,2,直接输出表达式“a+36”的结果为37,表达式“b+1”的结果为3。使用表达式语句输出。使用表达式语句输出,常用的输出方法是用print()函数,其调用格式为:print([输出项1,输出项2,......,输出项n][,sep=分隔符][,end=结束符])其中,输出项之间以逗号分隔,没有输出项时输出一个空行。sep表示输出时每个输出项之间的分隔符(默认空格),end表示结束符(默认回车换行结束)。print()函数从左到右求的每一个输出项的值,都依次显示在同一行。>>>print(1,2)12>>>print(1,2,sep='、')1、2>>>print(1,2,sep='、',end=';')1、2;53

在第三次调用print()函数时不换行,以“;”作为结束符。例如:print(1,2,end=';')print(2)运行结果如下:12;2标准输出54

Python程序不需要变量定义,可以直接描述程序的功能。程序的功能一般包括以下3个方面。输入原始数据。根据问题要求对原始数据进行相应处理。输出处理结果。其中,第二步对数据的处理是关键。对顺序结构程序而言,程序的执行是根据语句出现的顺序依次执行的。顺序结构举例55

顺序结构举例56

1.3.2

分支结构单分支if语句if语句由4部分组成:关键字if、条件表达式、冒号、表达式结果为真(非零、非空)时要执行的语句体。if语句的语法格式如下:if条件表达式:语句块单分支if语句的流程图如图1-2所示。单分支if语句先判断条件表达式的值是真还是假。如果判断的结果为真(非零、非空),则执行语句体中的操作;如果条件表达式的值为假(零、空),则不执行语句体中的操作。语句体既可以包含多条语句,也可以只由一条语句组成。图1-2单分支if语句流程图语句块TrueFalse条件表达式57

双分支if-else语句

双分支if-else语句的语法格式如下:if条件表达式:语句块1else:语句块2双分支if-else语句的流程图如图2-3所示。双分支if-else语句先判断条件表达式值的真假。如果条件表达式的结果为真,则执行语句体1中的操作;如果条件表达式为假,则执行语句体2中的操作。语句体1和语句体2既可以包含多条语句,也可以只由一条语句组成。图1-3双分支if-else语句流程图语句块1TrueFalse语句块2条件表达式58

多分支if-elif-else语句多分支if-elif-else语句的语法格式如图1-4所示:if条件表达式1:语句块1elif条件表达式2:语句块2......elif条件表达式n:语句块nelse:语句块n+1条件表达式1条件表达式2条件表达式nTrueFalse语句块nTrueFalse……语句块n+1语句块1语句块2……FalseTrue图1-4多分支if-elif-else语句流程图【例1-6】编写程序,实现从键盘输入两个整数a和b,按从大到小顺序输出。【解】分析:输入a,b,如果a<b,则交换a和b,否则不交换,最后输出a和b。参考程序如下:a,b=eval(input('请输入a,b:'))ifa<b:a,b=b,a#a和b交换print('{0},{1}'.format(a,b))程序运行结果如下:请输入a,b:123,456456,12359

1.3.1顺序结构分支结构程序举例【例1-7】编写程序,实现从键盘输入年份year,判断该年份是否为闰年,若是闰年,则输出“year年是闰年”,否则输出“year年不是闰年”,其中,year用输入的年份代替。判断闰年的方法:如果年份year能被400整除,或者能被4整除但不能被100整除,则该年份为闰年

【解】分析:根据闰年判断条件,若满足:year%400==0或者year%4==0andyear%100!=0则为闰年,否则不是闰年。参考程序如下:importmathyear=input('请输入年份:')year=int(year)ifyear%400==0or(year%4==0andyear%100!=0):print(year,'年是闰年')else:print(year,'年不是闰年')60

1.3.1顺序结构分支结构程序举例【例1-8】编写程序,从键盘输入学生成绩score,按输入成绩输出其对应的等级:score≥90为优,80≤score<90为良,70≤score<80为中等,60≤score<70为及格,score<60为不及格。参考程序如下:score=int(input('请输入成绩'))#int()转换字符串为整型ifscore>=90:print('优')elifscore>=80:print('良')elifscore>=70:print('中')elifscore>=60:print('及格')else:print('不及格')61

1.3.1顺序结构分支结构程序举例运行3次程序,分别输入年份2000、2013和2020,程序运行结果如下。程序第一次运行结果:请输入年份:20002000年是闰年程序第二次运行结果:请输入年份:20132013年不是闰年程序第三次运行结果:请输入年份:20202020年是闰年62

1.3.1顺序结构分支结构程序举例63

1.3.3循环结构可迭代对象(iterable)是指执行一次可返回一个元素的对象,它适用于循环。Python中包含的可迭代对象主要有:序列对象(sequence),例如字符串(str)、列表(list)、元组(tuple),字典(dict),文件对象(file),迭代器对象(iterator),生成器函数(generator)等。迭代器是一个对象,表示可迭代的数据集合,包括方法__iter__()和__next__(),可以实现迭代功能。生成器是一个函数,使用yield语句,每次产生一个值,也可以用于循环迭代。Python3.7中的内置对象range是一个迭代器对象,在迭代时产生指定范围的数字序列。range的格式如下:range(start,stop[,step])range对象返回的数字序列范围是[start,stop),从start开始,stop结束(不包含stop),默认每次迭代步长值为1,如果指定了可选的步长值step,则序列按步长step值增长。例如:foriinrange(1,10):print(i,end='')#range(1,10)产生数字序列1~9,输出123456789foriinrange(1,10,3):print(i,end='')#range(1,10,3)产生数字序列1,4,7,输出147运行结果如下:123456789147可迭代对象64

>>>print(1,2)12>>>print(1,2,sep='、')1、2>>>print(1,2,sep='、',end=';')1、2;在第三次调用print()函数时不换行,以“;”作为结束符。例如:print(1,2,end=';')print(2)运行结果如下:12;2又例如:print(1,2)print(1)运行结果如下:12165

循环语句while循环语句while语句用于循环执行某段程序,即在某条件成立(为真)下,循环执行某段程序,以重复处理相同的任务。while循环语句的语法格式如下:while判断条件:循环体或:while(判断条件):循环体while循环语句的执行过程如下。①执行到while语句,计算其后跟着的判断条件;②如果判断条件结果为True,则进入循环体执行,当执行到循环体语句序列结束点时返回①继续执行;③如果判断条件结果为False,则结束while循环的执行,转到while语句的后继语句执行。图1-5while语句的流程图循环体TrueFalsewhile语句的后继语句条件表达式66

循环语句

for语句for语句用于遍历可迭代对象集合中的元素,并对集合中的每个元素执行一次相关的操作。当集合中的所有元素完成迭代后,for循环将程序控制传递给for循环之后的下一条语句。for循环语句的语法格式如下:for变量in序列或可迭代对象循环体for循环语句的流程图如图1-6所示。for循环语句的执行过程如下。①执行到for语句,判断循环索引值是否在序列中;②如果该值在序列中,则取出该值,进入循环体执行,循环体执行结束时返回①继续执行;③如果该值不在序列中,则结束for循环的执行,转到for循环后面的语句执行。图1-6for循环语句的流程图循环体TrueFalsefor语句的后继语句序列(可迭代对象)中还有未访问元素?【例1-9】编写程序,利用while循环求1~100的和、1~100中所有奇数的和、1~100中所有的偶数和,并输出。【解】参考程序如下:sum_all=0 #存放1~100的和sum_odd=0 #存放1~100的奇数和sum_even=0 #存放1~100的偶数和i=1whilei<=100:sum_all=sum_all+i #计算所有数的和if(i%2==0):sum_even+=i #计算1~100的偶数和else:sum_odd+=i #计算1~100的奇数和i=i+1print('1~100的和=%d奇数和=%d偶数和=%d'%(sum_all,sum_odd,sum_even))程序运行结果如下:1~100的和=5050奇数和=2500偶数和=255067

1.3.3循环结构循环语句【例1-10】编写程序,利用for循环求1~100的和、1~100中所有奇数的和、1~100中所有偶数的和,并输出。【解】参考程序如下:sum_all=0sum_odd=0sum_even=0foriinrange(1,101):sum_all=sum_all+iif(i%2==0):sum_even+=ielse:sum_odd+=iprint('1~100所有数之和=%d',sum_all)print('1~100的奇数之和=%d',sum_odd)print('1~100的偶数之和=%d',sum_even)程序运行结果如下:1~100所有数之和50501~100的奇数之和25001~100的偶数之和255068

1.3.3循环结构循环语句69

1.4.3循环控制语句循环控制语句可以改变语句执行的顺序。Python支持break和continue循环控制语句。break语句break语句的格式如下:breakbreak语句可以用在while和for循环中,用于提前结束break语句所在的循环,即退出所在循环的执行。例如,在执行循环的过程中,如果某个条件得到了满足,则可以通过break语句立即终止所在循环的执行。当多个for或while循环彼此嵌套时,break语句只结束所在层次的循环,例如,如果break在两层循环嵌套的内层循环中,则只终止内层循环,进入到外层循环的下一条语句继续执行。continue语句continue语句的格式如下:continuecontinue语句与break语句类似,也用于while和for循环中。在循环执行体执行过程中,如果遇到continue语句,则程序结束本次循环,即程序会跳出本次循环的循环体剩余语句,回到循环开始的地方重新判断是否进入下一次循环。【例1-11】编写程序,利用break语句实现从键盘输入若干整数,输入0结束,统计其中正数、负数的个数,并输出。【解】参考程序如下:count_pos=0count_neg=0print('请输入整数(输入0结束):')whileTrue:n=int(input())ifn==0:breakifn>0:count_pos+=1else:count_neg+=1print('正数的个数:',count_pos)print('负数的个数:',count_neg)程序运行结果如下:请输入整数(输入0结束):1-434正数的个数:2负数的个数:170

1.3.3循环结构循环控制语句【例1-12】编写程序,利用continue语句实现输出1~100之间所有不能被3整除的数,每行输出10个。【解】参考程序如下:n=0print('1~100之间不能被3整除的数为:')foriinrange(1,101):ifi%3==0:continue #不能被3整除的数跳过print(str.format("{0:<5}",i),end='') #输出时每个数占5个位置,左对齐n=n+1if(n%10==0):print() #输出10个数后换行程序运行结果如下(只展示前3行):1~100之间不能被3整除的数为:12457810111314161719202223252628293132343537384041434471

1.3.3循环结构循环结构程序举例案例——人机对话猜数字本节介绍Python的案例——人机对话猜数字1.473

人机对话猜数字游戏,该游戏主要实现以下功能:1)由程序随机取数。2)用户输入数字猜数。3)程序根据输入判断大小,给出相应提示。4)用户不断尝试,直到猜中或者猜错的次数大于预设值的次数。5)如果猜中,玩家获胜;如果猜错,则重来,最多只能猜7次。分析:该题主要是将随机数产生、if条件语句、循环语句等综合应用。参考程序如下:importrandomsecret=random.randint(1,100)time=6 #猜数字的次数guess=0 #输入的数字minNum=0 #最小随机数maxNum=100 #最大随机数74

print('******欢迎来到猜数字游戏,请开始******')print('数字区间是',minNum,'-',maxNum)whileguess!=secretandtime>=0:guess=int(input('请输入你猜的数字:'))print('你输入的数字是:',guess)ifguess==secret:print('猜对了!真厉害')else: #若未猜对时,需提示用户数据所在的区间print('很遗憾,你猜错了,你还有',time,'次机会')ifguess<secret:minNum=guessprint('你猜的数字小于正确答案')print('现在的数字区间是:',minNum,'-',maxNum)

else:maxNum=guess

75

print('你猜的数字大于正确答案')print('现在的数字区间是:',minNum,'-',maxNum)time-=1print('游戏结束')程序运行结果如下:******欢迎来到猜数字游戏,请开始******数字区间是0-100请输入你猜的数字:50你输入的数字是:50很遗憾,你猜错了,你还有6次机会你猜的数字大于正确答案现在的数字区间是:13-25请输入你猜的数字:19你输入的数字是:19猜对了!真厉害游戏结束延伸阅读-开源编程1.5开源编程语言是指其设计、实现和分发遵循开放源代码协议的语言。这意味着任何人可以自由地访问该语言的源代码,学习其内部工作原理,对其进行修改以适应特定需求,并且可以在遵守相应许可条款的前提下分发修改后的版本。开源不仅仅是一种软件分发模式,它更代表了一种社区驱动的开发哲学,强调透明度、协作和共享。开源编程语言降低了学习和使用的门槛,使得更多的学生、教师和自学者能够接触并掌握最新的技术。丰富的在线资源、教程和支持社区为新手提供了成长的空间。通过全球开发者社区的协作,开源项目能够快速迭代更新,解决发现的问题,引入新功能。这种集体智慧的汇聚推动了技术的进步,促进了跨学科的合作与创新。Python作为一种广受欢迎的开源编程语言,其广泛应用覆盖了Web开发、数据分析、人工智能、自动化脚本等多个领域,极大地促进了各行业的数字化转型。77

1.5延伸阅读Machine

Learning

with

Python2.1目录2.22.42.3列表元组字典案例——约瑟夫环2.5延伸阅读列表本节介绍列表的基本操作、列表的相关函数和列表选取2.181

2.1.1

列表基本操作创建列表用一对方括号将列表中包含的元素括起来就构成一个列表对象,并可以使用“=”将该列表对象赋值给变量。例如:ls1=[1,'one','一'] #创建一个包含3个元素的列表对象并将其赋给变量ls1ls2=[] #创建一个不包含任何元素的列表对象(称为空列表)并将其赋给变量ls2ls3=[[1,2],[3,4,5]] #创建一个二维(多维)列表ls3print('ls1的值为',ls1) #输出列表ls1的所有元素print('ls2的值为',ls2) #输出列表ls2的所有元素(空列表)print('ls3的值为',ls3) #输出列表ls3的所有元素运行结果如下:ls1的值为[1,'one','一']ls2的值为[]ls3的值为[[1,2],[3,4,5]]82

2.1.1

列表基本操作增加列表元素在列表中增加元素可以使用以下4种方法1)使用del语句删除列表中某个特定位置的元素。例如: ls1=[1] #创建列表ls1 ls1=ls1+['a',2] #将列表对象['a',2]添

温馨提示

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

评论

0/150

提交评论