如何在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
相关产品推荐
相关产品推荐

