上一节讲了一些Python编程的一些基础知识,从这节开始,我们将跟随一些实际的小程序示例,进入正式的编程学习。
下面我们就来介绍一下今天这个只有10行代码的小程序,先来看一下它的运行效果,程序运行起来可以看到一只小乌龟在窗口中爬来爬去,当爬回到起点的时候形成一个黄色的多角星形状,像是一朵黄色的花朵。如下图所示:
来看一下在这个小程序中我们用到的知识,主要用到了标准库中的turtle模块,while循环和if条件判断语句。
turtle这个英文单词汉语意思是海龟,turtle库是turtle绘图体系python的实现;
turtle库绘图原理:有一只海龟在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形,海龟由程序控制,可以自由改变颜色、方向宽度等;
小知识:
turtle绘图体系:1969年诞生,主要用于程序设计入门;turtle库是python的标准库之一;属于入门级的图形绘制函数库。
说明:python计算生态=标准库+第三方库:
标准库:是随解释器直接安装到操作系统中的功能模块;
第三方库:需要经过安装才能使用的功能模块;
库library、包package、模块module统称为模块。
下面我们试着让这只小海龟画一画,我们先创建一个名字为t1.py的文件,文件头的写法在上节基础知识中已经做了介绍,这里不再重复,在Python中要让这只海龟出现在画布上,要先用import 关键字导入这个库,然后才能使用,我们让它来画一条直线,代码如下:
#!/usr/bin/env python
# -*- coding : utf-8 -*-
# Copyright (C) 2011-2020 BowenCentury
# All right reserved.
# 文件名称:t1.py
# 摘 要:
# 作者:fantastico
# 创建日期:2021-12-06 13:09:38
# 修改记录:
10 ##
import turtle
turtle.setup(640, 480) #创建一张640x480大小的画布,不调用此函数,则创建一个默认窗口
turtle.shape("turtle") #设置光标形状为一只小海龟
turtle.forward(100) #forward是让海龟向前行进的函数,可以简写为fd(),类似的函数还有
#backward()/bk()让小海龟后退,goto(x,y),
#让小海龟走到画布中x,y坐标对应的位置等
turtle.done() #画图结束,停止绘制
执行就会看到下面的窗口中,一只小乌龟向右爬了一小段距离。如下图:
如果这时候我们想让小海龟向左爬,可以用turtle.left()函数,让他向左转,如果想象右,可以用turtle的right()函数。我们现在让小海龟向左转90度,增加一行代码,turtle.left(90),这时候运行程序可以看到,海龟头转向上面了,但是它没有移动,如果想让他向上爬,那就还需要用turtle.forward()函数使它前进。看一下让它转向和向左前进100距离的效果,下面是代码和结果图:
turtle.left(90)
turtle.forward(100)
现在我们已经掌握了小海龟库的基本用法,现在就用它来画出我们开始的时候展示的黄色花朵。做之前我们发现要画这朵花,有一定的规律就是小海龟可以沿着红线从起点一直走,每走一段距离,改变一次方向,向着一个固定大小的夹角的方向前进,直到最后走回起点,图形绘画就完成了。这里如果我们手动一条一条写代码,每次让海龟朝着我们想要的方向前进,一定也可以完成这个图形,但是在开始的时候我说了这个小程序只有10行代码,如何用这么少的代码,让小海龟爬那么多次呢,这里就要用到循环语句while True: 了,这个语句的意思是一直重复执行它下面的语句,直到被中断。我们在画这朵花的时候希望当小海龟爬回起点之后就停止绘画,结束while循环,那么我们怎么才能结束它呢?就要用到if条件判断语句,当回到起点的时候,我们用break语句打破循环,停止绘画。这里在判断是否回到起点的地方用了一个abs()绝对值函数,当海龟绝位置pos()绝对值小于1时,海龟回到了原点,因为x、y坐标都为0,这时调用break语句,即可跳出while循环了。
下面来看看完整的程序代码:
import turtle #引入标准库turtle绘画模块
turtle.shape("turtle") #将光标设置为小海龟形状
turtle.color('red', 'yellow') #设置绘画的画笔和填充颜色为“红”和“黄”
turtle.begin_fill() #begin_fill()是填充开始,当调用end_fill()时,为图形着色
while True: #循环绘画开始
turtle.forward(200) #现在开始让海龟向前爬200距离
turtle.lt(160) #让海龟向左转过160度向一个20度的夹角方向准备继续爬行
if abs(turtle.pos()) < 1: break #只要它还没跑回原点,就继续上面的爬行和转向运作
turtle.end_fill() #这时海龟已经跑回原点,整个图形画好,给图形着色
turtle.done() #停止绘画
本节内容就到这里,我们回顾一下本节的内容,我们在画画之前,要先引入工具,就是这个标准库中的基本绘图模块turtle,然后我们通过while循环语句控制小海龟不停的转向、前进……,用if语句在while循环当中判断是否海龟已经跑回起点,当它跑回起点,调用break语句,终止并跳出while循环,完成图形的上色,一朵黄色的花朵就这样画完了,最后的turtle.done()函数停止绘画,并保持窗口,如果不加这句,我们虽然完成了绘画,窗口也会一闪即逝,加上这句,可以使绘画工作停下来,并在窗口中显示当前绘画的结果。
海龟运动命令:
forward(d):向前移动 d 长度
backward(d):向后移动 d 长度
right(d): 向右转动 d 度
left(d): 向左转动 d 度
goto(x,y):移动到坐标为(x,y)的位置
笔画控制命令:
speed(d):笔画移动的速度,范围1-10
up() : 画笔抬起,移动时不会在画布上留下痕迹
down() :画笔落下
setheading(d) : 改变海龟的朝向为 d
pensize() : 改变画笔的尺寸大小(宽度)
pencolor() : 改变笔画的颜色
reset() : 回复所有设置,清空窗口,重置turtle
clear() :清空窗口,不重置turtle
circle(r,e): 绘制一个圆形, r :半径 e:次数(数值越大,圆越标准)
注意:颜色填充为以下三个方法一起使用
begin_fill()
fillcolor(colorstr)#填充颜色
end_fill()
其他命令:
done():保持程序继续运行
undo():撤销上一次动作
hideturtle() :隐藏海龟
showturtle():显示海龟
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件: 执行语句…… else: 执行语句……
其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
具体例子如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 例1:if 基本用法
flag = False
name = 'luren'
if name == 'python': # 判断变量是否为 python
flag = True # 条件成立时设置标志为真
print 'welcome boss' # 并输出欢迎信息
else:
print name # 条件不成立时输出变量名称
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件(condition):
执行语句(statements)……
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假 false 时,循环结束。
while语句动态执行过程如下:
while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值,表示循环必定成立,具体用法如下:
# continue 和 break 用法
i = 1
while i < 10:
i += 1
if i%2 > 0: # 非双数时跳过输出
continue
print i # 输出双数2、4、6、8、10
i = 1
while 1: # 循环条件为1必定成立
print i # 输出1~10
i += 1
if i > 10: # 当i大于10时跳出循环
break
下一节,我们将继续学习其他示例小程序,我们将会学习到更多的Python语言语法,下一节我们也将详细详解循环语句、条件判断语句的用法,因为这两个语句是编程语言中用的最多的程序执行逻辑控制方法。