1.太阳花的绘制
import turtle
turtle.pencolor('red') # 画笔颜色
turtle.fillcolor('yellow') # 填充颜色
turtle.begin_fill() # 准备开始填充图形
for _ in range(50): # 画笔画了50次
turtle.forward(200)
turtle.left(170)
turtle.end_fill() # 填充完毕
turtle.mainloop() # 启动事件循环
效果:
2.五角星的绘制
(1)简单的五角星绘制,一个库,一个主函数,一个while循环
import turtle
def main():
count = 1
while count <= 5:
turtle.forward(100)
turtle.right(144)
count = count + 1
turtle.exitonclick()
if __name__ == '__main__':
main()
效果:
(2)重叠五角星
比(1)多了循环,加入循环操作可以绘制重复不同大小的图形
import turtle
def draw_recursive_pentagram(size): #函数的定义
'''
迭代绘制五角星
'''
# 计数器
count = 1
#开始循环
while count <= 5:
turtle.forward(size)
turtle.right(144)
count += 1
# 五角星绘制完成,更新参数
size += 10 # size = size + 10
if size <= 100:
draw_recursive_pentagram(size) # 函数中调用函数自身的方式称为**递归**
def main():
'''
主函数
'''
turtle.penup()
turtle.backward(200)
turtle.pendown()
turtle.pensize(2)
turtle.pencolor('red')
size = 50
draw_recursive_pentagram(size)
turtle.exitonclick()
if __name__ == '__main__': # 调用主函数
main()
效果:
(2)填充五角星
import turtle
import time
turtle.pensize(5)
turtle.pencolor('yellow')
turtle.fillcolor('red')
turtle.begin_fill()
for _ in range(5):
turtle.forward(200)
turtle.right(144)
turtle.end_fill()
time.sleep(2)
#绘制Done
turtle.penup() # 起笔,离开五角星位置,开始画Done
turtle.goto(-150, -120) # Done距离五角星中心的位置
turtle.color('violet') # 蓝紫色
turtle.write('Done', font=('Arial', 40, 'normal')) # 写文本,依次为文本内容、字体、字体大小、类型。
turtle.exitonclick()
效果:
3.绘制分形树
(1)简单的,利用递归函数绘制分形树
import turtle
def draw_branch(branch_length):
'''
绘制分形树
'''
if branch_length > 3:
# 绘制右侧树枝
turtle.forward(branch_length)
print('向前', branch_length)
turtle.right(20)
print('右转 20')
draw_branch(branch_length - 15)
# 绘制左侧树枝
turtle.left(40)
print('左转 40')
draw_branch(branch_length - 15)
# 返回之前的树枝
turtle.right(20)
print('右转 20')
turtle.backward(branch_length)
print('向后', branch_length)
def main(): #主函数#
turtle.penup()
turtle.left(90)
turtle.backward(180)
turtle.pendown()
branch_length = 120
draw_branch(branch_length)
turtle.exitonclick()
if __name__ == '__main__': # 调用主函数
main()
效果:
(2)带颜色的分形树
import turtle as tl # 以下需要调用turtle库函数都采用简写tl
def draw_smalltree(tree_length, tree_angle):
'''
绘制分形树函数
'''
if tree_length >= 3:
tl.forward(tree_length) # 往前画
tl.right(tree_angle)
draw_smalltree(tree_length - 10, tree_angle) # 画下一枝,直到画到树长小于3
tl.left(2 * tree_angle) # 转向画左
draw_smalltree(tree_length - 10, tree_angle) # 直到画到树长小于3
tl.rt(tree_angle) # 转到正向上的方向,然后回溯到上一层
if tree_length <= 30: # 树枝长小于30,可以当做树叶了,树叶部分为绿色
tl.pencolor('green')
if tree_length > 30:
tl.pencolor('brown') # 树干部分为棕色
tl.backward(tree_length) # 往回画,回溯到上一层
def main():
tl.penup
tl.left(90) # 因为树是往上的,所以先把方向转左
tl.backward(250) # 把起点放到底部
tl.pendown
tree_length = 100 # 设置树长
tree_angle = 20 # 树枝分叉角度
draw_smalltree(tree_length, tree_angle) # 调用draw_smalltree函数
tl.exitonclick()
if __name__ == '__main__':
main()
效果: