使用turtle库绘制分形树、太阳花、五角星

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()

效果:
在这里插入图片描述

要在Python中利用turtle模块绘制一个边长为200的太阳花,首先需要安装turtle(如果尚未安装),然后按照以下步骤操作: 1. 导入turtle模块: ```python import turtle ``` 2. 初始化画笔设置,包括颜色、宽度和速度: ```python window = turtle.Screen() window.bgcolor("white") pen = turtle.Turtle() pen.speed(0) # 设置最快的速度 pen.color("yellow") # 主色调黄色 ``` 3. 定义一个函数来绘制一个花瓣,采用贝塞尔曲线或五角星形状: ```python def draw_petal(size, angle): pen.forward(size) pen.left(angle) pen.back(size * 0.5) pen.right(angle + 144) # 贝塞尔曲线或其他角度调整 ``` 4. 绘制太阳花中心点(可以用一个小圆表示): ```python pen.penup() pen.goto(-100, -100) pen.pendown() pen.circle(30, 0) ``` 5. 重复绘制花瓣,这里通常会是一个循环,每增加一圈就旋转相应的角度,比如18度: ```python petals = 8 # 太阳花的花瓣数 angle_step = 360 / petals for _ in range(petals): draw_petal(200, angle_step) ``` 6. 最后隐藏画笔并关闭窗口: ```python pen.hideturtle() window.exitonclick() # 点击屏幕关闭窗口 ``` 整合以上代码,完整的太阳花绘制程序如下: ```python import turtle # ... (其他代码) def draw_petal(size, angle): pen.forward(size) pen.left(angle) pen.back(size * 0.5) pen.right(angle + 144) window = turtle.Screen() window.bgcolor("white") pen = turtle.Turtle() pen.speed(0) pen.color("yellow") pen.penup() pen.goto(-100, -100) pen.pendown() pen.circle(30, 0) petals = 8 angle_step = 360 / petals for _ in range(petals): draw_petal(200, angle_step) pen.hideturtle() window.exitonclick() #
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值