Python精选200Tips:156-160


运行系统:macOS Sonoma 14.6.1
Python编译器:PyCharm 2024.1.4 (Community Edition)
Python版本:3.12

往期链接:

1-5 6-10 11-20 21-30 31-40 41-50
51-60:函数 61-70:类 71-80:编程范式及设计模式
81-90:Python编码规范 91-100:Python自带常用模块-1
101-105:Python自带模块-2 106-110:Python自带模块-3
111-115:Python常用第三方包-频繁使用 116-120:Python常用第三方包-深度学习
121-125:Python常用第三方包-爬取数据 126-130:Python常用第三方包-为了乐趣
131-135:Python常用第三方包-拓展工具1 136-140:Python常用第三方包-拓展工具2

Python项目实战

141-145 146-150 151-155
P156–L系统分形树
技术栈:随机+规则实现的分形艺术
import turtle
import random

# L系统规则
def apply_rules(axiom):
    rules = {
   
        'F': 'F[+F]F[-F]F',  # 规则
        '+': '+',             # 旋转
        '-': '-',             # 旋转
        '[': '[',             # 存储状态
        ']': ']'              # 恢复状态
    }
    return ''.join(rules.get(char, char) for char in axiom)

# 生成 L 系统字符串
def generate_l_system(axiom, iterations):
    current = axiom
    for _ in range(iterations):
        current = apply_rules(current)
    return current

# 绘制分形树
def draw_l_system(t, instructions, angle, length):
    stack = []
    for command in instructions:
        if command == 'F':
            t.forward(length)
        elif command == '+':
            t.right(angle)
        elif command == '-':
            t.left(angle)
        elif command == '[':
            stack.append((t.position(), t.heading(), t.pensize()))
            t.color(random_color())  # 随机颜色
            t.pensize(t.pensize() + 1)  # 增加线条粗细
        elif command == ']':
            position, heading, pensize = stack.pop()
            t.penup()
            t.setposition(position)
            t.setheading(heading)
            t.pensize(pensize)
            t.pendown()

# 随机颜色生成
def 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AnFany

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值