擅长:python、mysql、java
<p>您正在迭代列表的所有组件,包括最后一项,然后测试下一项是否是运算符。这意味着当循环到达最后一个项时,就没有其他要测试的项,因此索引错误。你知道吗</p>
<p>请注意,运算符永远不会出现在表达式的末尾。也就是说,你不会得到像<code>2+3-</code>这样的东西,因为这是没有意义的。因此,您可以测试除最后一项之外的所有项目:</p>
<pre><code> for idx, item in enumerate(expr):
if item in operators or (idx == len(expr)-1):
result.append(item)
elif idx != len(expr)-1:
temp += item
if expr[idx+1] in operators:
tempTwo = ''.join(temp)
result.append(tempTwo)
temp = []
tempTwo = []
elif expr[idx+1] == None:
break
else:
continue
</code></pre>