<ol>
<li><p>首先是一个简单的问题。之所以得到<code>None</code>,是因为<code>operation_replacer</code>函数不返回任何内容,并且在最后的循环中打印该结果</p>
</li>
<li><p>此解析器仅适用于<;5个值,因为在<code>pair_operators</code>循环中有一段代码准备操作有点笨拙。我真的不明白-从一个元组你得到(操作符产品),你把它字符串化,然后解析它只得到列表。。。您可以使用tuple而不需要整个解析过程</p>
</li>
</ol>
<p>不加修饰的例子</p>
<pre><code>def operation_replacer(expression):
spare = expression
ops = ['+', '-', '*', '/']
ops_count = len([ch in ch in experssion if ch == '?'])
products = list(itertools.product(ops, repeat=ops_count))
for op_set in products:
for op in op_set:
expression = expression.replace('?', op, 1)
try:
evaluation = str(eval(expression))
except ZeroDivisionError:
evaluation = 'Division By Zero!'
print(expression + ' = ' + evaluation)
expression = spare
</code></pre>