如何在python3中创建L系统?

如何在python3中创建L系统?,python,function,python-3.x,Python,Function,Python 3.x,一种基本系统,因此函数接受字符串并生成进程的下一阶段。 从X开始,所以“X”指向“XY”,每个字母“Y”指向“X”。 公理X 规则十→ XY和Y→ X 结果应该如下所示: X→ XY→ XYX→ XYXXY→ 下一部分是编写一个程序,打印X和L系统的前5个字符串。那么当n为14时的长度 >>> def LSys(s): return s + ('X','XY')[s[-1]=='X'] >>> LSys('XYXYYX') 'XYXYYXXY'

一种基本系统,因此函数接受字符串并生成进程的下一阶段。 从X开始,所以“X”指向“XY”,每个字母“Y”指向“X”。 公理X 规则十→ XY和Y→ X 结果应该如下所示:

X→

XY→

XYX→

XYXXY→


下一部分是编写一个程序,打印X和L系统的前5个字符串。那么当n为14时的长度

>>> def LSys(s):
    return s + ('X','XY')[s[-1]=='X']

>>> LSys('XYXYYX')
'XYXYYXXY'

这将只识别X,其他任何内容都将返回一个添加的“X”

如果您保留替换的字典,那么为字符串的每个字符查找合适的一个是很简单的,并且使用dict.get的两个参数形式,如果您希望这是一个错误,我们可以通过逐字传递未识别的字符,您可以更改对替换规则的get调用,以便它触发一个KeyError

那么您的结果是.joinL\u systemmy\u string

也可以在Python3中利用str.translate

>>> replacement_rules = { ord('X'): 'XY',
...                       ord('Y'): 'X',
...                     }
>>> s = 'X'
>>> s = s.translate(replacement_rules); s
'XY'
>>> s = s.translate(replacement_rules); s
'XYX'
>>> s = s.translate(replacement_rules); s
'XYXXY'
>>> s = s.translate(replacement_rules); s
'XYXXYXYX'
>>> s = s.translate(replacement_rules); s
'XYXXYXYXXYXXY'

那么,如果我必须找到第10个术语,我会怎么做呢?下一部分是编写一个程序,打印X和L系统的前5个字符串。那么当n为14时的长度?如果s[-1]=='X'或者'X',则将其写为返回s+'XY'会更清楚。但我不认为这是正确的:考虑“Y”-这将给出“YX”,而不是“X”。我认为对于你的测试,预期的答案应该是‘xyxxyxxy’。@教授,这一部分应该很简单。如果你有问题,你应该发布一个新的问题,详细说明你的尝试,这样它就不会因为“太宽”而关闭。因此,我可以帮助您调试代码,但您在要求我们为您做家庭作业或作业时应小心。好的,下次我将展示我的工作方式,感谢您的帮助和反馈。感谢您的所有帮助!问题结束了,所以我给你们的答案增加了另一种方式。希望没问题再次感谢你的帮助!
>>> replacement_rules = { ord('X'): 'XY',
...                       ord('Y'): 'X',
...                     }
>>> s = 'X'
>>> s = s.translate(replacement_rules); s
'XY'
>>> s = s.translate(replacement_rules); s
'XYX'
>>> s = s.translate(replacement_rules); s
'XYXXY'
>>> s = s.translate(replacement_rules); s
'XYXXYXYX'
>>> s = s.translate(replacement_rules); s
'XYXXYXYXXYXXY'