五年级信息做网站的软件,html用什么软件,中文编程软件,网站找图片做海报侵权自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501
在前3节的实例中#xff0c;我们一直绘制的都是直线#xff0c;实际上#xff0c;海龟绘图还可以绘制其他形状的图形#xff0c;如圆形、多边形等…自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501
在前3节的实例中我们一直绘制的都是直线实际上海龟绘图还可以绘制其他形状的图形如圆形、多边形等下面分别进行介绍。
1 绘制线条
在海龟绘图中画笔处在落笔状态时只要海龟移动时就会绘制出移动轨迹线条。通过改变移动的方向和位置可以绘制出各种线条。在绘制线条时主要通过15.1.2小节介绍的控制方向和位置的方法实现。下面通过一个实例来演示如何绘制复杂的线条。 实例15.3 绘制台阶
通过逆时针旋转90度向前移动再顺时针旋转90度并向前移动可以实现一级台阶的绘制重复多次这样的操作就可以绘制出多级台阶的形状代码如下
import turtle # 导入海龟绘图模块
turtle.color(blue) # 设置画笔颜色为蓝色
turtle.forward(40) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(20) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(20) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(20) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(20) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(40) # 向前移动
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行程序将在屏幕上绘制5级台阶如图15.21所示。 图15.21 绘制5级台阶
在绘制线条时结合循环可以绘制出很多复杂、有趣的图案例如下面的实例。
实例15.4 绘制回文图案
使用海龟绘图结合for循环可以实现回文图案。实现方法在循环中不断地增加移动的距离并向一个方法旋转指定角度即可实现。具体代码如下
import turtle # 导入海龟绘图模块
turtle.color(green) # 画笔颜色为绿色
# 输出回文图案
for i in range(32): # 循环32次
turtle.forward(i*2) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行程序将显示如图15.22所示的图案。 图15.22 绘制回文图案
2 绘制矩形
在海龟绘图中没有提供绘制矩形的方法不过可以使用旋转移动位置来实现。下面看一个具
体的实例。 实例15.5 绘制彩色边框的矩形
绘制一个长150像素宽200像素的矩形并且每条边的颜色不一样。代码如下
import turtle # 导入海龟绘图模块
turtle.shape(turtle) # 改变海龟光标的形状为海龟
turtle.width(3) # 画笔粗细
turtle.color(orange) # 画笔颜色为橙色
turtle.forward(200) # 画一条200像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color(red) # 画笔颜色为红色
turtle.forward(100) # 画一条100像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color(green) # 画笔颜色为绿色
turtle.forward(200) # 画一条200像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color(purple) # 画笔颜色为紫色
turtle.forward(100) # 画一条100像素的线
turtle.ht() # 隐藏海龟光标
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行程序屏幕中逐渐绘制一个彩色边框的矩形绘制完成后海龟光标将隐藏如图15.23所示。 图15.23 绘制彩色边框的矩形
如果将图15.23所示的矩形重复旋转多次将得到一个圆形图案。修改后的代码如下
import turtle # 导入海龟绘图模块
def drawrect(num):
for i in range(1,num1):
turtle.left(5)
turtle.width(3) # 画笔粗细
turtle.color(orange) # 画笔颜色为橙色
turtle.forward(200) # 画一条200像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color(red) # 画笔颜色为红色
turtle.forward(100) # 画一条100像素的线
320
Python 从入门到实践
turtle.right(90) # 顺时针旋转90度
turtle.color(green) # 画笔颜色为绿色
turtle.forward(200) # 画一条200像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color(purple) # 画笔颜色为紫色
turtle.forward(100) # 画一条100像素的线
turtle.ht() # 隐藏海龟光标可以提升速度
drawrect(100)
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行程序将看到不断地绘制彩色边框的矩形最终停留在如图15.24所示的图案上。 图15.24 绘制圆形图案
3 绘制圆或弧形
在海龟绘图中使用circle()方法可以绘制圆或者弧形。circle()方法的语法如下
turtle.circle(radius, extentNone, stepsNone)
参数说明
l radius 必选参数用于指定半径其参数值为数值。圆心在海龟光标左边一个半径值的位置。
l 如果值为正数则按照逆时针方向绘制圆弧否则按照顺时针方向绘制。
l extent 可选参数用于指定夹角的大小数值或None如果设置为None或者省略则绘制整个圆。另外如果指定的值不是完整圆周将以当前画笔位置为一个端点绘制圆弧。
l steps 可选参数用于指定边数。对于圆实际上是以其内切正多边形来近似表示的这里的 steps就是指定的正多边形的边数。如果extent参数省略时则该参数需要通过关键字参数的形式指定即需要使用steps 边数。
例如绘制一个红色的半径为80的圆代码如下
import turtle
turtle.color(red) # 设置画笔的颜色
radius 80 # 定义半径
turtle.circle(radius,None) # 绘制圆
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行上面的代码将绘制如图15.25所示的圆。
再例如绘制一个绿色半径为80的半圆弧代码如下
import turtle
turtle.color(green) # 设置画笔颜色
radius 80 # 定义半径
turtle.circle(radius,180) # 绘制半圆弧
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行上面的代码将绘制如图15.26所示的半圆弧。 图15.25 绘制圆 图15.26 绘制弧 实例15.6 绘制五环图案
通过循环绘制5个半径为100的不同颜色的圆形通过调整位置组成五环图案。代码如下
import turtle # 导入海龟绘图模块
turtle.resizemode(auto) # 改变模式为自动
radius 100 # 圆的半径
turtle.width(10) # 画笔粗细
colorlist [royalblue,black,red,yellow,green] # 颜色列表
turtle.penup() # 抬笔
turtle.back(radius*2) # 移动一个圆的距离
turtle.pendown() # 落笔
for i in range(5): # 循环5次
turtle.color(colorlist[i]) # 设置画笔颜色
turtle.circle(radius) # 绘制圆
if i ! 2: # 不是第三个圆时
turtle.penup() # 抬笔
turtle.forward(radius*2) # 移动一个圆的距离
turtle.pendown() # 落笔
else:
turtle.penup() # 抬笔
turtle.goto(radius*-1,radius*-1) # 移动到第二行的第一个圆的位置
turtle.pendown() # 落笔
322
Python 从入门到实践
turtle.ht() # 隐藏画笔
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行程序将在屏幕上绘制由5个圆组成的五环图案效果如图15.27所示。 图15.27 绘制五环图案
另外在海龟绘图中还提供了绘制圆点的dot()方法。通过该方法可以在屏幕上绘制指定大小和颜色的实心圆点。dot()方法的语法如下
turtle.dot(sizeNone, *color)
参数说明
l size 用于指定圆点的直径参数值为1的整型数省略则取pensize4和2*pensize中的较大值。
l color 用于指定圆点的颜色其参数值为颜色字符串或颜色数值元组。
例如在屏幕上绘制一个蓝色的、直径为50的圆点代码如下
import turtle # 导入海龟绘图模块
turtle.dot(50, blue)
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行上面的代码将在屏幕上绘制如图15.28所示的圆点。 图15.28 绘制圆点
4 绘制多边形
在海龟绘图中绘制多边形通常有两种方式。一种是通过circle()方法实现另一种是通过循环旋转、移动实现。下面分别进行介绍。
l 通过circle()方法实现
将circle()方法的参数steps设置为想要的多边形的边数即可绘制指定边数的正多边形例如绘制一个正8边形的代码如下
import turtle # 导入海龟绘图模块
turtle.color(red)
turtle.circle(100,steps8) # 绘制正8边形
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行上面的代码将绘制一个正八边形如图15.29所示。 图15.29 绘制正八边形
l 通过循环旋转、移动实现多边形
在15.4.2小节绘制矩形时我们通过移动指定距离表示边长并旋转90度4次绘制出了一个矩形。那么如果把矩形换成正方形就可以通过循环4次的操作来实现。通过这种方式也可以实现绘制其他的正多边形。关键要素如下
Ø 循环次数边数。
Ø 旋转角度180-内角的度数内角的度数计算公式为内角边数-2*180/边数。即旋转角度180-边数-2*180/边数。
Ø 移动的距离边长。
例如要绘制一个彩色边框的正8边形代码如下
import turtle # 导入海龟绘图模块
colorlist [pink,purple,skyblue,cyan,green,lime,orange,red]
turtle.width(2) # 线粗2像素
side 8 # 边数
for i in range(side):
turtle.color(colorlist[i]) # 设置边框的颜色
turtle.forward(60) # 边长
turtle.left(180-(side-2)*180/side) # 旋转角度
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行上面的代码将绘制一个彩色边框的正八边形如图15.30所示。 图15.30 绘制彩色边框的正八边形
5 绘制填充图形
在海龟绘图中默认绘制的图形只显示轮廓不会填充这时可以使用begin_fill()和end_fill()方法绘制填充图形。其中begin_fill()方法放置在绘制要填充的形状之前调用而end_fill()方法设置在绘制完要填充的形状之后调用并且要保证前面已经调用了begin_fill()方法。
例如将15.4.4小节通过circle()方法绘制的正八边形填上绿色代码如下
import turtle # 导入海龟绘图模块
turtle.color(green) # 填充颜色
turtle.begin_fill() # 标记填充开始
turtle.circle(100,steps8) # 绘制正8边形
turtle.end_fill() # 标记填充结束
turtle.ht() # 隐藏画笔
turtle.done() # 海龟绘图程序的结束语句开始主循环
运行上面的代码将显示如图15.31所示的绿色实心正八边形。