【发布时间】:2020-05-16 14:54:31
【问题描述】:
line = "add(multiply(add(2,3),add(4,5)),1)"
def readLine(line):
countLeftBracket=0
string = ""
for char in line:
if char !=")":
string += char
else:
string +=char
break
for i in string:
if i=="(":
countLeftBracket+=1
if countLeftBracket>1:
cutString(string)
else:
return execute(string)
def cutString(string):
countLeftBracket=0
for char in string:
if char!="(":
string.replace(char,'')
elif char=="(":
string.replace(char,'')
break
for char in string:
if char=="(":
countLeftBracket+=1
if countLeftBracket>1:
cutString(string)
elif countLeftBracket==1:
return execute(string)
def add(num1,num2):
return print(num1+num2)
def multiply(num1,num2):
return print(num1*num2)
readLines(line)
我需要执行整个行字符串。我试图将括号内的每个函数一个一个地剪切并用结果替换它们,但我有点迷失了。不知道如何继续,我的代码得到了错误:
File "main.py", line 26, in cutString
if char!="(":
RuntimeError: maximum recursion depth exceeded in comparison
告诉我要搬到哪里,使用哪种方法?
【问题讨论】:
-
预期输出是什么?
execute有吗? -
一般来说,我建议首先编写一个返回标记流的词法分析器。通过字符串替换进行解析并不是解决这个问题的方法。
-
@zamir 回答整个嵌套函数。在这种情况下,答案是 46,但我需要以这种格式处理更多随机输入。
-
@thebjorn 你能给我一些例子吗?我不是很熟悉。
标签: python parsing nested-function