1、Python程序设计简明教程教材目录第1章 Python语言基础第2章 基本数据类型、运算符和表达式第3章 程序控制结构第4章 序列第5章 字典与集合第6章 函数第7章 文件第8章 Python第三方库安装及常用库介绍1.1Python语言概述1.2Python语言开发工具1.3标识符、常量和变量1.4基本输入输出函数1.5turtle库 1.1Python语言概述1.1.1Python语言的发展语言的发展1、Python语言发明者是谁?语言发明者是谁?荷兰人 Guido van Rossum(吉多范罗苏姆)2、为什么为什么起这个名字?起这个名字?Python中文含义是“大蟒蛇”1989年吉多
2、范罗苏姆闲来无事,为了打发无聊的圣诞节,准备开发一个新的脚本语言 英国的一部肥皂剧Monty Pythons Flying Circus(1)Python是一门开源语言 开源:是指源程序的代码全部公开。曾经:设置了森严的专业壁垒,使得早期技术发展缓慢 现如今:由于底层开发人员和草根工程师开源、共享精神的贯彻实施推动信息技术不断向前快速发展1.1.2 Python语言语言的特点的特点扩展:linux操作系统也是开源的(2)Python是一门简洁、优雅的语言是一门简洁、优雅的语言 很多语言如:C+语言、Java语言拥有繁琐、复杂的语法结构 解决同一个问题,其它语言需要3-4条语句 Python一条
3、足矣 Pythonic:像Python语言一样简洁优雅的事物(3)Python是一门生态是一门生态语言语言 自然界中的生物种类繁杂多样,彼此之间相互依存、共同繁衍,构成了美丽、多元的大千世界 信息技术以生态资源大融合为特点,打破专业壁垒,彼此之间交织渗透,在激烈的竞争中不断依存、发展、终结、再生,成为技术创新之源 Python语言目前拥有多达十多万个第三方库供人们免费使用“高粘合性”以及站在“巨人”肩膀上思考和解决问题的特征是划时代进步(4)Python语言语言是是通用性语言通用性语言 专用性语言:是用于编写特定程序的语言,比如:HTML(超文本链接)语言。应用领域仍然比较狭窄 通用性语言:语
4、法没有专门、特定的程序元素,可以用来编写各种类型各种类型的应用程序,应用范围广泛,被称为跨平台应用的基础语言(5)Python语言是脚本语言是脚本语言语言 计算机高级语言根据执行机制的不同分为两大类:静态语言和脚本语言 静态语言采用编译方式执行 脚本语言采用解释方式执行 编译方式是指将程序的源代码集中转换成目标代码的过程 解释方式是将程序的源代码逐条转换成目标代码并逐条运行目标代码的过程(6)Python语言是一门既面向对象又面语言是一门既面向对象又面向过程的向过程的语言语言 面向过程是一种以过程为中心的编程思想 用户需要了解解决问题的算法及详细步骤 面向过程三种语句结构:顺序、分支和循环 面
5、向对象核心思想是:万事万物皆是对象 面对一个复杂的事物,不需要考虑每个对象内部细致的工作原理,只需要分清该事物由哪些对象组成,并根据需要为每一个对象设置必要的属性、方法、动作即可(7)Python语言是一门免费的语言是一门免费的语言语言 官方网站:https:/www.Python.org。该网站由Python软件基金会(Python Software Foundation,PSF)维护 它是一个非营利性组织,拥有Python2.1之后的所有版权,即使用于商业用途也不存在收费及授权问题 目的是可以更好地推进并保护Python语言的开放性 官网上可以同时下载pyhon2.x和Python3.x两
6、个不同系列的版本,但需要注意的是两者不完全兼容两者不完全兼容!Python3.X系统越来越稳定,功能越来越完善,代表未来 直接下载Python3.X即可1.2.1 Python语言版本的选择语言版本的选择1.2 Python语言开发工具(1)IDLE 系统自带的集成开发环境IDLE(Integrated Development Environment),简称IDE 它允许用户在代码编辑器完成编码后,使用调试器进行调试1.2.2 Python语言常用集成开发环境语言常用集成开发环境(2)Pycharm PyCharm 是一款功能强大的Python语言集成开发环境,具有跨平台性。但它并不是Pyth
7、on系统自带的,而是由JetBrains开发的。PyCharm 的下载地址是:http:/ Professional是专业版,community 是社区版。社区版是免费使用的。Python语言运行语言运行方法方法 运行Python语言有交互式和文件式两种方法是指用户输入一条命令后,系统立刻给出输出结果的一种操作方法,常用于调试少量代码时使用是最常用的编程方法,是指用户将多条语句按照一定的逻辑顺序存放在某个文件中,由系统运行该文件,并得到对应结果输出的操作方法Python语言的应用语言的应用领域领域几乎渗透到各行各业 人工智能 大数据处理 系统结构 文本处理 虚拟现实 逻辑控制 创意绘图 随机艺
8、术 正确理解不同高级语言的正确理解不同高级语言的特点特点以人工智能为例l其核心算法如深度学习、机器学习等代码通常由C/C+语言编写l从从某种意义上讲某种意义上讲C/C+语言才是人工智能领域最重语言才是人工智能领域最重要的要的语言语言lPython语言运行速度虽然没有 Java语言、C+语言快,但是它编写代码简洁、优美,可用它来调用人工智能的各种功能接口l任何一门高级语言都有其适用性及局限性l各种语言交叉并用,充分利用不同语言的特点是最成熟、最实际、最高效的策略 1.3.1 标识符标识符 1.3.2 常量与变量常量与变量1.3 1.3 标识符、变量与常量标识符、变量与常量211.3.1 标识符标
9、识符 在使用Python语言编写程序过程中,经常要对使用的程序元素(变量、函数、数组、文件等)进行命名。在程序中用于标识变量名、函数名、数组名、文件名等的符号称为标识符。简单地说,标识符就是程序中某个元素的名称。221.3.1 标识符标识符l 标识符应遵循如下规则:由字母,数字,下划线三种字符组成(可以使用汉字,大小写不同)。首字符不能是数字。231.3.1 标识符标识符标识符可分为系统标识符和用户标识符,其中系统标识符是系统预先定义的标识符,也称作保留字或关键字(keyword)。Python语言有35个(旧版有33个)保留字,如表1.1所示。用户标识符是用户自定义的标识符,Python语言
10、规定用户标识符不能使用保留字。l 保留字(系统标识符):241.3.1 标识符标识符FalsedefifraiseNonedelimportreturnTrueelifintryandelseiswhileasexceptlambdawithassertfinallynonlocalyieldbreakfornotasyncclassfromorawaitcontinueglobalpass表1-1 Python 35个保留字列表25 import keyword keyword.kwlist1.3.1 标识符标识符 以下是合法的用户标识符:var1、var_1、_var1、变量1、变量_1、
11、For、FOR 以下是不合法的用户标识符:1var、var.1、var-1、变量.1、变量-1、forl 标识符说明举例:261.3.1 标识符标识符l 程序中使用不合法的标识符,系统错误提示如下:1a=15SyntaxError:invalid syntax271.3.2 1.3.2 常量与变量常量与变量常量常量:在程序运行过程中,其值不能改变的量称为常量。l 常量有不同的类型,有整型常量、实型常量、字符串常量等。l 例如10、20是整型常量,3.14、2.71是实型常量,”Python”是字符串常量。281.3.2 1.3.2 常量与变量常量与变量变量变量:在程序运行过程中,其值可以改变的
12、量称为变量。l 在Python语言中,不需要事先声明变量名及其类型,直接赋值即可创建任何类型的对象变量。l 不仅变量的值是可以变化的,变量的类型也是可以变化的,Python语言解释器会根据赋值运算右侧表达式的值来推断创建变量的类型。291.3.2 1.3.2 常量与变量常量与变量【例1-1】变量类型的变化。a=15 type(a)#查看变量a类型 a=3.14 type(a)a=”Python”type(a)30 1.3.2 1.3.2 常量与变量常量与变量 变量名用在赋值号(详见第二章)左右两侧意义不同。用在赋值号左侧的变量名可以看作是变量引用的存储空间 用在赋值号右侧的变量名可以看作是变量
13、所引用存储空间中的值 例如a=a+10,实际上是变量 a 中的原值加 10 后再存入变量 a。l 附:赋值号左右两侧的变量名意义不同:31 1.3.2 1.3.2 常量与变量常量与变量【例1-2】赋值号左右两侧变量名的理解。a=100 b=200 a=a+b b=b+a a,b#显示变量a,b的值(300,500)321.4 1.4 基本输入输出函数基本输入输出函数 1.4.1 input()函数函数 1.4.2 eval()函数函数 1.4.3 print()函数函数331.4.1 input()1.4.1 input()函数函数l input()函数函数是Python语言内置函数之一,用于
14、完成变量的输入。调用格式:=input(提示信息提示信息)函数说明:在Python语言中用input()函数实现变量的输入,无论用户在控制台输入字符串或数值,函数的返回值始终为字符串类型。提示信息为界限符括起来的字符串,用于提示用户输入的内容,可省略,若省略则什么也不提示。341.4.1 input()1.4.1 input()函数函数【例1-3】input函数练习。name=input(请输入姓名:)请输入姓名:Zhang3#”Zhang3”为用户输入数据nameZhang3 a=input(请输入整数a:)请输入整数a:95#”95”为用户输入数据 a95 a+85#表达式类型不一致,下面
15、是错误提示。Traceback(most recent call last):File,line 1,in a+85TypeError:can only concatenate str(not int)to str351.4.2 1.4.2 evaleval()()函数函数l eval()是Python语言中经常使用的内置函数之一,用来解析给定的字符串表达式,并返回表达式的值。调用格式:=eval(字符串表达式字符串表达式)361.4.2 1.4.2 evaleval()()函数函数【例1-4】eval函数练习1。a=15 b=25 eval(a+b)#相当于去掉字符串表达式两端的双引号40
16、eval(a+b)#参数类型不是字符串类型,下面为错误提示。Traceback(most recent call last):File,line 1,in eval(a+b)TypeError:eval()arg 1 must be a string,bytes or code object371.4.2 1.4.2 evaleval()()函数函数【例1-5】eval函数练习2。a=input(请输入整数a:)请输入整数a:95 a=eval(a)#转换a为数值类型 a95381.4.2 1.4.2 evaleval()()函数函数l Python语言编程中经常使用上例语句组合完成数值变量的
17、输入。a=eval(input(“请输入整数a:”)请输入整数a:95 a95l 注:以上例句可以简单理解为“eval()用于去掉字符串两端的界线符”,实际应用中eval()函数还有许多作用。391.4.3 print()1.4.3 print()函数函数l print()函数也是Python语言内置函数之一,用于输出数据对象。调用格式:print(objects,sep=,end=n)参数说明:p objects:可以一次输出多个对象,输出多个对象时,需要用逗号分隔。p sep:设定输出多个对象时的分割符,默认为一个空格。p end:用来设定输出的结尾字符。默认值是换行符n,若输出后不想进行
18、换行操作,也可以换成其他字符。401.4.3 print()1.4.3 print()函数函数【例1-6】print函数练习。print(,Hello World) Hello World print(,Hello world,sep=,),Hello world a=15 print(a,a*a)15 225 print(a=,a,a*a=,a*a)a=15 a*a=22541 print(objects,sep=,end=n)1.4.3 print()1.4.3 print()函数函数【例1-7】编写程序,完成键盘输入圆半径,输出圆面积及周长。12345678#E1-7.py 输入半径,求
19、圆面积与周长并输出。r=input(输入圆半径:)r=eval(r)s=3.14*r*rc=2*3.14*rprint(“半径:”,r)print(“面积:”,s,”周长:”,c)421.5 turtle 1.5 turtle 绘图库绘图库 1.5.1 画布与画笔设置画布与画笔设置 1.5.2 绘图命令绘图命令431.5 turtle 1.5 turtle 绘图绘图 Python语言的turtle库是一个直观有趣的图形绘制函数库,也是Python语言标准库之一。turtle(海龟)图形绘制的概念诞生于1969年,绘图方法可以想象为一个小乌龟,在一个横轴为x、纵轴为y的坐标平面中,以原点(0,0
20、)位置为开始点,根据一组函数指令的控制来移动,从而在它爬行的路径上绘制出图形。441.5 turtle 1.5 turtle 绘图绘图l turtle库及其对象的导入格式:import turtle as 别名 导入turtle库。使用该方法导入turtle库后,程序中使用turtle库中 函数必须使用turtle函数名或 别名函数名。例如:turtle.pensize()、turtle.pencolor()from turtle import*导入turtle库中所有对象。使用该方法导入turtle库中所有对象后,程序中使用turtle库中函数可以直接使用函数名。例如:pensize()、p
21、encolor().451.5.1 1.5.1 画布与画笔设置画布与画笔设置 画布就是turtle为我们展开用于绘图的区域,我们可以设置它的大小和所在屏幕的初始位置。461.5.1 1.5.1 画布与画笔设置画布与画笔设置1.画布属性设置画布属性设置l turtle.screensize(width,height,bg)设置画布大小、背景。参数分别为画布的宽、高(单位像素)、背景颜色。例如:turtle.screensize(800,600,green)默认画布大小(400,300),白色背景。参数为空时,返回当前画布大小。471.5.1 1.5.1 画布与画笔设置画布与画笔设置 l turt
22、le.setup(width,height,startx,starty).设置画布显示窗口大小、位置。参数:width、height输入宽和高为整数时表示像素,为小数时表示占据屏幕的比例(startx,starty)这一坐标表示窗口左上角顶点与屏幕左上角的距离,如果为空,则窗口位于屏幕中心 显示窗口的大小设置若小于画布,窗口会显示滚动条。例如:turtle.setup(0.6,0.6)turtle.setup(800,800,100,100)481.5.1 1.5.1 画布与画笔设置画布与画笔设置from turtle import*screensize()(400,300)screensiz
23、e(800,600)screensize()(800,600)l 画布属性设置画布属性设置实例:实例:491.5.1 1.5.1 画布与画笔设置画布与画笔设置2.画笔属性设置画笔属性设置在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟(画笔)。turtle绘图中,就是使用位置和方向描述小乌龟的状态。画笔的属性包括画笔的颜色、画线的宽度、画笔移动速度等。50511.5.2 1.5.2 绘图命令绘图命令 lcolormode(1.0 255):设置画笔颜色模式,颜色模式取值1.0或255,colormode为1.0时r,g,b取值范围为0,1.0的小数,colo
24、rmode为255时r,g,b取范围为0,255的整数。默认为colormode(1.0)。无参数时返回当前颜色模式值。例:colormode(255)521.5.2 1.5.2 画布与画笔设置画布与画笔设置 RGB颜色模式是工业界的一种颜色标准,也是目前电子设备通用的颜色模式。l 附:RGB颜色基本概念531.5.1 1.5.1 画布与画笔设置画布与画笔设置 RGB颜色“三原色”原理:通过打在显示屏上红(R)、绿(G)、蓝(B)三色电子光束的强弱变化,相互叠加来得到各式各样的颜色。541.5.1 1.5.1 画布与画笔设置画布与画笔设置 RGB颜色总数:颜色总数:256*256*256=16
25、777216,(1678万色,简称1600万色,也称24位色(2的24次方)。551.5.2 1.5.2 画布与画笔设置画布与画笔设置 lpencolor(colorstring):设置画笔颜色,无参数输入时返回当前画笔颜色值。参数colorstring:可以是green、red、blue、yellow 等英文字串。也可以写成(r,g,b)格式,其中(r,g,b)取值范围取决于颜色模式的设定。也可以写成其RGB三元组对应的十六进制字串形式。561.5.2 1.5.2 画布与画笔设置画布与画笔设置 颜色颜色颜色颜色英文英文RGB的整数的整数值值RGB的小数的小数值值十六进制串十六进制串 blac
26、k0,0,0(0,0,0)#000000 while255,255,255(1,1,1)#FFFFFF red255,0,0(1,0,0)#FF0000 green0,255,0(0,1,0)#00FF00 blue0,0,255(0,0,1)#0000FF yellow255,255,0(1,1,0)#FFFF00 gold255,215,0(1,0.8,0)#FFD700 violet238,130,238(0.9,0.5,0.9)#EE82EE purple160,32,240(0.6,0.1,0.9)#A020F0 Python中几种常用颜色的4种表示形式。例如:pencolor(re
27、d)pencolor(1,0,0)pencolor(255,0,0)pencolor(#FF0000)pencolor(purple)pencolor(0.6,0.1,0.9)pencolor(160,32,240)pencolor(#A020F0)571.5.1 1.5.1 画布与画笔设置画布与画笔设置 lpensize(width):设置画笔线条的宽度为width像素。无参数输入时返回当前画笔宽度。例:pensize(5)lspeed(speed):设置画笔移动速度,画笔绘制的速度范围在 0,10 整数之间,数字越大画笔移动速度越快。例:speed(3)581.5.2 1.5.2 绘图命令
28、绘图命令 1.移动画笔与转角绘图移动画笔与转角绘图 在绘制由若干连续图形片段组成的较复杂图形时,每次绘制某个连续图形片段前,需要提起画笔,并预先确定画笔位置与方向。591.5.2 1.5.2 绘图命令绘图命令 l 移动画笔与转角绘图常用命令移动画笔与转角绘图常用命令1:penup()/pu()/up()提起画笔,此时移动画笔不绘图,用于重新设置画笔位置,通常在pendown()后开始绘图。pendown()/pd()/down()画笔移动时绘制图形,为默认设置。forward(distance)/fd(distance)画笔向当前方向移动distance像素距离。backward(distan
29、ce)/bk(distance)画笔向相反方向移动distance像素距离。(画笔方向不改变,即箭头方向不改变,绘制时向箭头反方向移动)goto(x,y)将画笔移动到坐标为x,y的位置(后续课有详解)601.5.2 1.5.2 绘图命令绘图命令 l 移动画笔与转角绘图常用命令移动画笔与转角绘图常用命令2:right(angle)/rt(angle)画笔顺时针移动angle角度。left(angle)/lt(angle)画笔逆时针移动angle角度。setheading(angle)/seth(angle)设置当前画笔朝向为angle角度。61import turtleturtle.fd(200
30、)turtle.setheading(270)import turtleturtle.fd(200)turtle.right(270)举例1.5.2 1.5.2 绘图命令绘图命令 【例1-8】绘制三层嵌套正方形。621.5.2 1.5.2 绘图命令绘图命令 l 本例要点:多次重新定位画笔 pu()goto()pd()每次都要重新设置画笔起始方向。seth()l 部分程序代码:63600600300-300(-200,-200)(-150,-150)(-100,-100)-200-150-1001.5.2 1.5.2 绘图命令绘图命令 2.连接给定坐标点绘图连接给定坐标点绘图 绘图前若能够确定各
31、连接点坐标位置,使用goto()命令移动画笔,连接给定坐标点绘制连续线段,是最简单实用的线段绘图方法。641.5.2 1.5.2 绘图命令绘图命令 【例1-9】连接下面给定坐标点绘图。坐标点:(0,200),(200,0),(50,0),(200,-100),(30,-100),(30,-250),(-30,-250),(-30,-100),(-200,-100),(-50,0),(-200,0)。651.5.2 1.5.2 绘图命令绘图命令 l 本例要点:goto(x,y)l 部分程序代码:66200200-200-5050-100-2501.5.2 1.5.2 绘图命令绘图命令 3.圆形绘
32、制与图形填充圆形绘制与图形填充 绘制圆形命令既可以绘制任意弧度的圆弧,也可以绘制任意边数的正多边形,是Python语言绘图常用命令。填充命令可用于封闭图形的填充。671.5.2 1.5.2 绘图命令绘图命令 l 圆形绘制与图形填充常用命令1:p radius:半径。radius值为正(负)数时,圆心分别在画笔方向左(右)侧。turtle初始状态时画笔指向屏幕右侧,所以radius为正数时,圆心在画笔上方,绘制的圆形在画笔上方。反之绘制圆形在画笔下方。p extent:弧度,负数为反方向,默认为绘制整个圆形。p steps:内接正多边形边数(弧形绘制的步数)。circle(radius,exte
33、nt,steps )681.5.2 1.5.2 绘图命令绘图命令 circle函数样例:circle(100,270)circle(100,270,5)circle(-100,steps=5)69import turtleturtle.circle(100,270)#turtle.circle(100,270,5)#turtle.circle(-100,steps=5)1.5.2 1.5.2 绘图命令绘图命令 color(pencolor,fillcolor)同时设置画笔颜色pencolor(边框颜色)与填充颜色fillcolor。begin_fill()以当前位置为起点,开始填充图形。end_fill()以当前位置为终点,结束填充图形。p 注:当开始和结束没有形成闭合区域时,系统会默认开始和结束点连接在一起。l 圆形绘制与图形填充常用命令2:701.5.2 1.5.2 绘图命令绘图命令 【例1-10】用不同颜色填充内切圆。711.5.2 1.5.2 绘图命令绘图命令#填充红边黄色圆形color(“red”,”yellow”)begin_fill()circle(150)end_fill()l 部分程序代码:72