Python初级组测试题之Turtle画图2

1. 画8个内接正五边形

题目描述

python绘制正五边形的代码 用python画正五边形_python绘制正五边形的代码


解题思路

(1) 共有n=8个正五边形,因而有8次循环,每次旋转角度增加ang=360/n

(2) 画内接正五边形用circle(raduis=50,steps=5)

(3) 设置画笔颜色用pencolor(‘blue’),隐藏画笔hideturtle()

import turtle

n = 8
ang = 360 / n
h = 0
t = turtle.Turtle()
t.hideturtle()
t.pencolor('blue')
t.seth(90)
for i in range(n):
    # 每次递增1个ang角度
    h = ang * i
    # 向左旋转
    t.left(h)
    # 画内接正五边形
    t.circle(radius=50, steps=5)
turtle.done()

2. 画正方形内接圆

题目描述

python绘制正五边形的代码 用python画正五边形_开发语言_02


解题思路

(1) 画正方形用goto最简单,设置坐标每次100

(2) 画圆用circle(raduis=50)刚好直径100,形成内切圆

(3) 设置画笔颜色用pencolor(‘red’),填充颜色fillcolor(‘yellow’),隐藏画笔hideturtle()

(4) 填充开始用begin_fill(),结束填充用end_fill()

import turtle

t=turtle.Turtle()
t.hideturtle()
# 画正方形
t.pencolor('red')
t.goto(0,-100)
t.goto(100,-100)
t.goto(100,0)
t.goto(0,0)

# 画圆形
t.penup()
t.goto(50,-100)
t.pendown()
t.fillcolor('yellow')
t.begin_fill()
t.circle(radius=50)
t.end_fill()
turtle.done()

3. 画三角形及内接步正六边形

题目描述

python绘制正五边形的代码 用python画正五边形_开发语言_03


解题思路

(1) 为了简化绘画步骤,内接正六边形先用circle内接正六边形画,正六边形从圆心切割,是正三角形,因此半径=边长150

(2) 移动圆心位置到需要的位置goto(150,0)

(3) 画内接正六边形用t.circle(radius=150,steps=6)填充颜色fillcolor(‘green’)

(4) 循环画6个外部三角形,这个需要提前在草稿本上绘制路径

(5) 隐藏画笔hideturtle()

(6) 填充开始用begin_fill(),结束填充用end_fill()

import turtle

t=turtle.Turtle()
t.hideturtle()
# 画正六边形
t.penup()
t.goto(150,0)
t.seth(90)
t.pendown()
t.fillcolor('red')
t.begin_fill()
t.circle(radius=150,steps=6)
t.end_fill()
# 画外部三角形
t.seth(0)
t.pencolor('white')
t.fillcolor('green')
for i in range(6):
    t.begin_fill()
    t.seth(60*(i+1))
    t.forward(150)
    t.left(120)
    t.forward(150)
    t.end_fill()
turtle.done()

4. 画扇子

题目描述

python绘制正五边形的代码 用python画正五边形_python绘制正五边形的代码_04


解题思路

(1)先计算起始角度,为(180-120)/2=30°,结束为30+120=150,每一度一次循环,可以用for也可以while True

(2)每一次画的时候,先抬笔退30就到了扇子底部,再一次画150+30就把一根线完整画出,再退150回到原点

(3)循环150次画出扇子

(4)充分利用forward(30)正向前进,而forward(-30)只是回退不改变方向的特点。

import turtle
t=turtle.Turtle()
# t.speed(speed=0)
t.hideturtle()
# 起始角度为30,每一度画一次起始(180-120)/2=30,结束30+120=150
ang1=30
while ang1<=150:
    t.penup()
    t.seth(ang1)
    # 回退到扇子底部,走30
    t.forward(-30)
    t.pendown()
    # 走到扇子底部,走150+30
    t.forward(180)
    # 抬笔回退150,回到原点
    t.penup()
    t.forward(-150)
    ang1+=1

5. 画彩色风扇

题目描述

python绘制正五边形的代码 用python画正五边形_蓝桥杯_05


解题思路

(1)用列表存储四种颜色,这样每次循环用下标刚好取到需要的填充颜色

(2)先把第一次画出来,再按照每次累加360/4=90进行循环

(3)第一次设置初始角度-45°,移动100,再左转90度,准备画扇形,这些需要反复练习

(4) t.circle(radius=100, extent=45)画45度的扇形,画完以后goto(0,0)进行封闭,第一个扇形画完了

(5)利用for i in range(4)循环四次,每次就是第一次的初始角度45+360/4*i就可以重复画出另外四个扇形了

import turtle

t = turtle.Turtle()
# t.speed(speed=0)
t.hideturtle()
listc = ['red', 'yellow', 'blue', 'green']

for i in range(4):
    # 依次从列表中获取颜色
    t.fillcolor(listc[i])
    t.begin_fill()
    # 设置初始角度为45°,后面每次累加360/4
    t.seth(-45+360/4*i)
    # 直行100
    t.forward(100)
    # 左转90度,以便画扇形,这个是试出来的
    t.left(90)
    # 画45°的扇形
    t.circle(radius=100, extent=45)
    # 封口
    t.goto(0, 0)
    t.end_fill()
turtle.done()