# 第24期-画图形

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

# 1 问题描述

按照要求使用turtle库画出图形
画半径为50的圆;
画长方形;
画边长为100的红色五角星。

# 2 解题思路

在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。

# 3 解题方法

# 画半径为50的圆

import turtle
turtle.circle(50)
turtle.done()
1
2
3

第1行: 引入turtle画图库
第2行: turtle.circle()便是turtle库的画圆指令,括号内填的是半径
第2行: turtle.done()是turtle库的运行指令,表示开始画图

代码运行结果为:
image.png

这里用到了turtle.circle函数,简单讲解下这个函数:
turtle.circle()函数
语法:
turtle.circle(radius, extent=None, steps=None)
参数说明:
radius(半径):半径为正(负),表示圆心在画笔的左边(右边)画圆;
extent(弧度) (optional);
steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)。

# 画长方形

import turtle
i = 1
while i <= 4:
    if i % 2 == 1:
        turtle.fd(100)
    else:
        turtle.fd(50)
    turtle.left(90)
    i += 1
turtle.done()
1
2
3
4
5
6
7
8
9
10

第1行: 引入turtle画图库
第2行: 定义i变量并赋值为1,作为画图时转弯以及前进的次数
第3行: 使用while循环,当前进次数小于或等于四的时候,继续循环
第4-7行: 当次数是奇数时,前进100个单位,当次数是偶数时,前进50个单位
第8行: 每当一条线画完的时候,前进方向都向左转90度
第9行: 记录转弯及前进的次数
第9行: 开始画图

代码运行结果为:
image.png

# 画边长为100的红色五角星

import turtle
i = 1
turtle.fillcolor('red')
turtle.color('red')
turtle.begin_fill()
while i <= 5:
    turtle.fd(100)
    turtle.right(144)
    i += 1
turtle.end_fill()
turtle.done()
1
2
3
4
5
6
7
8
9
10
11

第1行: 引入turtle画图库
第2行: 定义i变量并赋值为1,作为画图时转弯以及前进的次数
第3行: 定义画图的填充颜色为红色(指闭环图形内部的颜色)
第4行: 定义画图的画笔颜色为红色(指任意图形边长的颜色)
第5行: 填充颜色开始
第6行: 使用while循环,当前进次数小于或等于5的时候,继续循环
第7-9行: 每次循环前进100个单位,每当一条线画完的时候,前进方向都向右转144度,并记录记录转弯及前进的次数
第10行: 给从turtle.begin_fill()到turtle.end_fill()内部的代码期间画的图形填充颜色
第11行: 开始画图

代码运行结果为:
image.png

# 全部放到一起

import turtle  # 引入一个绘图库
# 画半径为50的圆
turtle.circle(50)
# 画长方形
turtle.penup()
turtle.goto(-100, 0)
turtle.right(180)
turtle.pendown()
i = 1
while i <= 4:
    if i % 2 == 1:
        turtle.fd(100)
    else:
        turtle.fd(50)
    turtle.left(90)
    i += 1
turtle.left(180)
# 画边长为100的红色五角星
turtle.penup()
turtle.goto(100, 0)
turtle.pendown()
i = 1
turtle.fillcolor('red')
turtle.color('red')
turtle.begin_fill()
while i <= 5:
    turtle.fd(100)
    turtle.right(144)
    i += 1
turtle.end_fill()
turtle.done()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

代码运行结果为:
image.png

这里用到了turtle库内的一些方法,简单讲解下这些方法:
turtle.circle(半径)
设置填充颜色turtle.fillcolor(颜色) 开始填充turtle.begin_fill() 结束填充turtle.end_fill()
抬起笔turtle.up() 放下笔turtle.down()
向左转turtle.left(角度) 向右转turtle.right(角度)
向前走turtle.forward(距离)/turtle.fd(距离) 向后走turtle.back(距离)/turtle.bk(距离)

移动到指定位置tutle.goto(x坐标, y坐标)/ turtle.setx(x坐标) / turtle.sety(y坐标) 回到开始位置turtle.home()
设置笔的颜色turtle.pencolor(颜色)

# 4 视频解析

高清视频讲解,请查看AI大学堂Python基础实战100例 (opens new window)
关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
AI大学堂公众号.png

更新于: 12/28/2021, 7:43:14 AM