admin管理员组

文章数量:829189

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

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

1. 画8个内接正五边形
题目描述

解题思路
(1) 共有n=8个正五边形,因而有8次循环,每次旋转角度增加ang=360/n
(2) 画内接正五边形用circle(raduis=50,steps=5)
(3) 设置画笔颜色用pencolor(‘blue’),隐藏画笔hideturtle()

import turtlen = 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. 画正方形内接圆
题目描述

解题思路
(1) 画正方形用goto最简单,设置坐标每次100
(2) 画圆用circle(raduis=50)刚好直径100,形成内切圆
(3) 设置画笔颜色用pencolor(‘red’),填充颜色fillcolor(‘yellow’),隐藏画笔hideturtle()
(4) 填充开始用begin_fill(),结束填充用end_fill()

import turtlet=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. 画三角形及内接步正六边形
题目描述

解题思路
(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 turtlet=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. 画扇子
题目描述

解题思路
(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)# 回退到扇子底部,走30t.forward(-30)t.pendown()# 走到扇子底部,走150+30t.forward(180)# 抬笔回退150,回到原点t.penup()t.forward(-150)ang1+=1

5. 画彩色风扇
题目描述

解题思路
(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 turtlet = 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/4t.seth(-45+360/4*i)# 直行100t.forward(100)# 左转90度,以便画扇形,这个是试出来的t.left(90)# 画45°的扇形t.circle(radius=100, extent=45)# 封口t.goto(0, 0)t.end_fill()
turtle.done()

本文标签: 蓝桥杯Python初级组测试题之Turtle画图2