gpt4 book ai didi

python - 在 python 中解析表达式的算法?

转载 作者:太空狗 更新时间:2023-10-30 03:04:07 24 4
gpt4 key购买 nike

我有下一个在 Python 中解析表达式的算法:

def parse(strinput):
for operator in ["+-", "*/"]:
depth = 0
for p in range(len(strinput) - 1, -1, -1):
if strinput[p] == ')': depth += 1
elif strinput[p] == '(': depth -= 1
elif depth==0 and strinput[p] in operator:
# strinput is a compound expression
return (strinput[p], parse(strinput[:p]), parse(strinput[p+1:]))
strinput = strinput.strip()
if strinput[0] == '(':
# strinput is a parenthesized expression?
return parse(strinput[1:-1])
# strinput is an atom!
return strinput

(可以在这里找到:http://news.ycombinator.com/item?id=284842)

我很难理解它,因为我发现 Python 文档对这种情况没有太大帮助。谁能告诉我行:for operator in ["+-", "*/"]: 是什么意思?我知道它的结构类似于每个字符串变量,它是这 2 个元素数组中的运算符,但为什么要这样写 ["+-, */"]? Python如何分离它?在第一次迭代中,运算符是“+-”?

任何帮助都意义重大。谢谢

最佳答案

你是对的; for operator in ["+-", "*/"]:意味着运算符将是 "+-"第一次通过和"*/"第二次通过循环。

注意它是如何检查 strinput[p] in operator 的. Python 将字符串视为字符列表,因此此表达式只有在 strinput[p] 时才为真。等于"+""-"第一次通过和"*""/"第二次通过。

(他们这样做的原因是为了操作顺序 - "+""-" 获得与 "*""/" 相同但较低的优先级)

关于python - 在 python 中解析表达式的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com