用于Lsystem的Python ApplyRules()函数
我正在尝试编写一个函数,将单个字符和一组规则作为列表 规则列表的格式将是以下格式的一组字符串:[“character1:substitution”,“character2:substitution”] 我需要遍历规则列表,并将字符串解析为符号和替换 我应该使用规则数循环n次,并要求用户以指定格式“character:substitution”输入规则。并将每个规则字符串存储在组合列表中 这是我到目前为止写的代码:用于Lsystem的Python ApplyRules()函数,python,python-3.x,Python,Python 3.x,我正在尝试编写一个函数,将单个字符和一组规则作为列表 规则列表的格式将是以下格式的一组字符串:[“character1:substitution”,“character2:substitution”] 我需要遍历规则列表,并将字符串解析为符号和替换 我应该使用规则数循环n次,并要求用户以指定格式“character:substitution”输入规则。并将每个规则字符串存储在组合列表中 这是我到目前为止写的代码: def applyRules(char, rules): for rule
def applyRules(char, rules):
for rule_list in (rule.split(':') for rule in rules):
char = char.replace(rule_list[0], rule_list[1])
return char
它应该打印d,然而,它在我尝试的所有时候都会给我错误,除非我只放了一条规则,比如b:c 回溯(最近一次呼叫最后一次): 文件“C:\Users\wpw\Desktop\csp\mainmodule.py”,第13行,在main()中 文件“C:\Users\wpw\Desktop\csp\mainmodule.py”,第7行,在main中 inst=lsystems.applyRules(字符,规则) applyRules中第5行的文件“C:\Users\wpw\Desktop\cs110\lsystemfunctions.py” char=char.replace(规则列表[0],规则列表[1]) 索引器错误:列表索引超出范围
如何正确打印输出?如注释中所述,您需要使用
.split()
将规则字符串转换为规则列表:
def applyRules(string, rules):
for character, substitution in (rule.split(':') for rule in rules):
string = string.replace(character, substitution)
return string
def main():
char = input("What character do you want to put? ")
rules = input("Put your rules: ").split()
inst = applyRules(char, rules)
print(inst)
main()
输出
% python3 test.py
What character do you want to put? b
Put your rules: b:c c:d
d
%
这假设您的规则位于一个由空格分隔的输入中。另一种方法是将
input(“put your rules:”)
放入循环,在您从用户输入单个规则时附加到rules
,空响应表示规则输入结束。您是否查看了:-单字符替换代码?此外,您正在将规则
传递给函数,而您应该将规则.split()
传递给函数,我从前面的问题中演示了如何传递。我确实看到了单字符替换代码的函数,但由于我没有学习dict.()和get(),我认为我无法使用这些函数。我试着使用规则。拆分,但它似乎不起作用,尽管我把它放进去了。。上面说split()不能用于列表谢谢你的帮助!
% python3 test.py
What character do you want to put? b
Put your rules: b:c c:d
d
%