Python程序设计基础(八)
Python计算生态
计算思维
计算思维是人类科学思维活动的重要组成部分。人类在认识世界、改造世界的过程中表现出三种基本的思维特征:
以实验和验证为特征的实证思维, 以物理学科为代表;
以推理和演绎为特征的逻辑思维, 以数学学科为代表;
以设计和构造为特征的计算思维, 以计算机学科为代表。
计算思维的本质是抽象( Abstraction)和自动化( Automation)。
程序设计方法论
分为:自顶向下的设计方法,自底向上的执行方式
一个解决复杂问题行之有效的方法被称作自顶向下的设计方法 , 其基本思想是从一个总问题开始, 试图把它分解为很多小问题组成的解决方案。再用同样的方法依次攻破每个小问题, 最终问题变得非常小, 以至于可以很容易解决。然后只需把所有的碎片组合起来, 就可以得到一个程序。
计算生态
近20年的开源运动产生了深植于各信息技术领域的大量可重用资源, 直接且有力地支撑了信息技术超越其他技术领域的发展速度, 形成了计算生态。产业界广泛利用可重用资源快速构建应用已经是主流的产品开发方式。
Python语言从诞生之初就致力于开源开放, 建立了全球最大的编程计算生态。
Python官方网站提供了第三方库索引功能( the Python pack age index,PyPI)
网址:https://pypi.python.org/pypi
该页面列出了 Python语言三四十万个第三方库的基本信息, 这些函数库覆盖了信息领域所有技术方向。这里需要说明的是, Python语言的函数库并非都采用 Python语言编写。由于Python有非常简单灵活的编程方式, 很多采用C、C++等语言编写的专业库可以经过简单的接口封装供 Python语言程序调用。这样的黏性功能使得 Python语言成了各类编程语言之间的接口, Python语言也被称为“胶水语言”。
Python第三方程序包括库(library)、模块(module)和程序包(package)等多种命名
Python标准库
有一部分 Python 计算生态随 Python 安装包一起发布,用户可以随时使用, 被称为 Python标准库。受限于 Python安装包的设定大小, 标准库数量不会很多, 270个左右。
Python第三方库
更广泛的 Python 计算生态采用额外安装方式服务用户, 被称为 Python 第三方库。这些第三方库由全球各行业专家、工程师和爱好者开发, 没有顶层设计, 由开发者采用“尽力而为”的方式维护。
Python通过新一代安装工具pip管理大部分 Python第三方库的安装。
生态式编程
生态式编程是一种基于开源软件、开源功能、开源模块等开源计算功能的程序设计方法。当面对计算需求时, 生态式编程充分利用已有开源功能, 以搭积木方式,构建快速原型并不断迭代。
生态式编程与过程式编程、函数式编程并不矛盾, 这是更高级别代码抽象方式, 体现了更加开阔的编程思维和计算视野。
基本的Python内置函数
Python解释器提供了68个内置函数, 这些函数不需要引用库而直接使用。
这里介绍其中的32个,请掌握。
函数名 | 说明 |
---|---|
abs(x) | x的绝对值。如果x是复数, 返回复数的模 |
all(x) | 组合类型变量x中所有元素都为真时返回True, 否则返回False;若x为空,返回True |
any(x) | 组合类型变量x中任一元素都为真时返回True, 否则返回False;若x为空,返回False |
bin(x) | 将整数x转换为等值的二进制字符串, 如 bin(1010)的结果是 0b1111110010 |
bool(x) | 将x转换为Boolean类型,即True或False。如 bool(‘’)的结果是False |
chr(i) | 返回Unicode为的字符。如 chr(9996)的结果是‘✌’ |
complex(r,i) | 创建一个复数r+is 1j,其中 i 可以省略。如 complex(10,10)的结果是10+10j |
dict() | 创建字典类型。如 dict() 的结果是一个空字典11 |
divmod(a,b) | 返回a和b的商及余数。如divmod(10,3)的结果是一个(3,1) |
eval(s) | 计算字符串s作为 Python 表达式的值。如eval1+99)的结果是100 |
exec(s) | 计算字符串s作为 Python 语句的值。如exec(‘a = 1+999)运行后,变量a的值为1000 |
float(x) | 将x转换成浮点数。如float(1010)的结果是 1010.0 |
hex(x) | 将整数转换为16进制字符串。如 hex(1010)的结果是 0x3f2 |
input(s) | 获取用户输人,其中s是字符串,作为提示信息。s 可选 |
int(x) | 将x转换成整数。如int(9.9)的结果是9 |
len(x) | 计算变量x的长度。如len(range(10))的结果是10 |
list(x) | 创建或将变量x 转换成一个列表类型。如 list({10,9,8})的结果是[8,9,10] |
max(a1,a2,…) | 返回参数的最大值。如max(1,2,3,4,5)的结果是5 |
min(a1,a2,…) | 返回参数的最小值。如min(1,2,3,4,)的结果是1 |
oct(x) | 将整数x转换成等值的八进制字符串形式。如oct(1010)的结果是 001762 |
open( fname,m) | 打开文件,包括文本方式和二进制方式等。其中,m 部分可以省略,默认是以文本可读形式打开 |
ord(c) | 返回一个字符的 Unicode编码值。如ord(字’)的结果是23383 |
pow(x,y) | 返回x的y次幂。如 pow(2,pow(2,2))的结果是16 |
print(x) | 打印变量或字符串x。print()的end 参数用来表示输出的结尾字符 |
range(a,b,s) | 从a到b(不含)以s为步长产生一个序列。如 list(range(1,10,3))的结果是[1,4,7] |
reversed(r) | 返回组合类型r的逆序迭代形式。如 for i in reversed([1,2,3])将逆序遍历列表 |
round(n) | 四舍五入方式计算n。如 round(10.6)的结果是11 |
set(x) | 将组合数据类型x转换成集合类型。如 set([1,1,11])的结果是{1} |
sorted(x) | 对组合数据类型x 进行排序,默认从小到大。如 sorted([1,3,5,2,4])的结果是[1,2,3,4,5] |
str(x) | 将x转换为等值的字符串类型。如 str(0x1010)的结果是 ‘4112’ |
sum(x) | 对组合数据类型x计算求和结果。如 sum([1,3524])的结果是15 |
type(x) | 返回变量x的数据类型。如type({1:2})的结果是<class dict’> |
Python标准库
turtle库
turtle(海龟)是 Python 重要的标准库之一, 它能够进行基本的图形绘制。 turtle图形绘制的慨念诞生于1969年, 成功应用于 LOGO编程语言。由于 turtle图形绘制概念十分直观且非常流行, Python接受了这个概念, 形成了 Python的 turtle库,并成为标准库之一。
turtle库包含100多个功能函数,主要包括窗体函数、画笔状态函数和画笔运动函数3类。
引用
使用 Import保留字对turtle库的引用有如下3种方式:
1.import turtle
则对 turtle库中函数调用采用 turtle.<函数名>()
形式
1 | import turtle |
2.from turtle import *
则对 turtle库中函数调用直接采用 <函数名>()
形式,不再使用turtle.作为前导
1 | from turtle import * |
3.import turtle as t
则对turtle库中函数调用采用更简洁的 t.<函数名>()
形式,保留字的作用是将 turtle 库给予别名t。此处也可以使用 t 之外的其他别名
1 | import turtle as t |
窗体函数
turtle库的 turtle.setup()
函数与窗体有关
turtle.setup(width, height, startx, starty)
作用:设置主窗体的大小和位置。
参数:
width:窗口宽度。如果值是整数, 表示的是像素值;如果值是小数, 表示窗口宽度与屏幕的比例;
height:窗口高度。如果值是整数, 表示的是像素值;如果值是小数, 表示窗口高度与屏幕的比例;
startx:窗口左侧与屏幕左侧的像素距离。如果值是None, 窗口位于屏幕水平中央;
starty:窗口顶部与屏幕顶部的像素距离。如果值是None, 窗口位于屏幕垂直中央;

画笔状态函数

turtle.penup()
别名:turtle.pu() , turtle.up()
作用:提起画笔之后, 移动画笔不绘制形状。
turtle.pendown()
别名: turtle.pd(),turtle.down()
作用: 放下画笔之后, 移动画笔将绘制形状
turtle.pensize( width)
别名: turtle.width()
作用:设置画笔宽度, 当无参数输人时返回当前画笔宽度
turtle.pencolor( colorstring)
别名: turtle.pencolor( (r,g,b))
作用:设置画笔颜色,当无参数输入时返回当前画笔颜色。
注:colorstring:表示颜色的字符串, 例如:”purple”、”red”、”blue”等。
(r,g,b):颜色对应的 RCB的0~1数值,例如1,0.65,0。
turtle.color( colorstring1 ,colorstring2)
别名: turtle.color((r1,g1,b1),(r2,g2,b2))
作用:设置画笔和背景颜色, 当无参数输人时返回当前画笔和背景颜色。
注:colorstring:表示颜色的字符串, 例如:”purple”、”red”、”blue”等。
(r,g,b):颜色对应的 RCB的0~1数值,例如1,0.65,0。
turtle.begin_fill()
作用:设置填充区域色彩。在开始绘制拟填充背景图形前调用
turtle.end_fill()
作用:turtle.begin_fill()的配对函数。在结束绘制拟填充背景图形后调用。
turtle.filling()
作用:返回当前图形背景颜色的填充状态, 即如果当前代码在 begin_fill()和end_fill()之间则返回 True,否则返回 False。
turtle.clear()
作用:清空当前海龟对象绘制的图形, 但不改变其位置和角度
turtle.reset()
作用:清空当前绘图窗口, 海龟对象绘图位置和角度归为原点
turtle.screensize( width , height,bgcolor)
作用:设置当前画布窗口的宽度为 width, 高度为 height, 背景颜色为 bgcolor; 如果不给出参数, 则以元组形式返回当前画布窗口的宽度和高度(width,height)。
turtle.hideturtle()
作用:隐藏画笔的 turtle形状。
turtle.showturtle()
作用:显示画笔的 turtle形状。
turtle.isvisible()
作用:如果 turtle 画笔的形状显示,则返回 True,否则返回 False。
turtle.write( str , font= None)
作用:根据设置的字体 font 形式,将字符串 str 显示在画布上。
注:str:拟输出的字符串。
font:字体名称、字体尺寸和字体类型 3 个元素构成的元组。该参数可选,省略时以默认参数显示。
画笔运动函数

turtle.forward( distance)
别名:turtle.fd( distance )
作用:小海龟向当前行进方向前进 distance 距离。
注:distance:行进距离的像素值,当值为负数时, 表示向相反方向前进
turtle.backward(distance)
别名:turtle.bk( distance)
作用:向小海龟当前行进的反方向运动 distance 距离,画笔方向不变。
注:distance:行进距离的像素值。当值为负数时, 表示向前进方向运动
turtle.right(angle)
作用:改变画笔行进方向为当前方向右侧 angle 度。angle 是角度相对值。
turtle.left(angle)
作用:改变画笔行进方向为当前方向左侧 angle 度。angle 是角度相对值
turtle.goto(x,y)
作用:移动画笔到画布中的特定位置, 该位置以坐标(x,y)方式表达。如果当前画笔处于落下状态, 则绘制当前位置到目标位置的线条。
turtle.setx(x)
作用:修改画笔的横坐标到x, 纵坐标不变
turtle.sety(y)
作用:修改画笔的纵坐标到 y, 横坐标不变
turtle.setheading(to_angle)
别名:turtle.seth(to_angle)
作用:设置小海龟当前行进方向为 to_angle, 该角度是绝对方向角度值

turtle.home()
作用:移动画笔到坐标系原点,画笔方向为初始方向。
turtle.circle(radius ,extent= None)
作用:根据半径radius绘制extent角度的弧形
注:radius:弧形半径。当值为正数时, 半径在小海龟左侧; 当值为负数时, 半径在小海龟右侧;
extent:绘制弧形的角度。当不给该参数或参数为 None 时, 绘制整个圆形
turtle.dot( size . color )
作用:绘制一个带有背景色color、直径为 size 的圆点
turtle.undo()
作用:撤销绘图的最后一次动作。
turtle.speed(s)
作用:设置画笔的绘制速度, 参数为010 整数, 0表示没有绘制动作, 110 逐步增加绘制速度, 超过10则等同于参数为零。
Python实例
编写一个程序, 绘制三角形、四边形、五边形、六边形和圆形。通过调用 turtle的 begin_fill()和end_fill()方法将绘制的图形填充上颜色。通过调用 write()函数输出一行文字,字体为 Times字号为18,粗体。
1 | from turtle import * |
代码演示:
