Bootstrap

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 

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;