You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现支持多迭代的简单L-system函数?

实现支持多迭代的L-system函数

没问题,我来帮你搞定多迭代的问题!你的基础代码已经完成了单次替换的核心逻辑,只需要在外层加个循环,把每次迭代的结果作为下一次的输入就行,很简单~

修改后的完整代码

def lsystem(axiom, rules, iterations):
    # 迭代次数为0时直接返回公理
    if iterations == 0:
        return axiom
    
    current_string = axiom
    for _ in range(iterations):
        output = ''
        for char in current_string:
            # 按规则替换字符,没有规则的就保留原字符
            output += rules.get(char, char)
        # 更新当前字符串为本次迭代的结果,用于下一次循环
        current_string = output
    
    return current_string

# 测试示例
rules = {"A": "ABA", "B": "BBB"}
# 1次迭代
print(lsystem("AB", rules, 1))  # 输出: ABABBB
# 2次迭代
print(lsystem("AB", rules, 2))  # 输出: ABABBBABBBBBBB

关键修改点解释

  • 参数命名优化:把原来的x,y改成axiom, rules,加上iterations参数,代码可读性直接拉满。
  • 迭代次数为0的处理:直接返回输入的公理,完全符合你的需求。
  • 多迭代循环:用range(iterations)控制循环次数,每次循环里执行你原来的替换逻辑,然后把替换后的结果赋值给current_string,作为下一次迭代的起始字符串。
  • 用dict.get()简化逻辑:rules.get(char, char)等价于你原来的if-else判断,如果字符在规则里就取对应的值,否则返回原字符,代码更简洁紧凑。

这样改完之后,不管你需要迭代几次,只要传入对应的iterations参数就能得到正确结果啦~

内容的提问来源于stack exchange,提问作者Piotrek Wcisło

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:15:30