<p>您正在查找<code>goto</code>语句。早在1968年,Dijkstra写了一篇著名的论文<a href="http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html" rel="nofollow">Go To Statement Considered Harmful</a>,解释了为什么不应该寻找{<cd1>}。在</p>
<p>正确的做法是构造代码。在</p>
<p>最简单的改变是:</p>
<pre><code>print "1) Add"
print "2) Substract"
print "3) Multiply"
print "4) Divide"
print "5) Exit"
while True:
x=input("Choose an operation: ")
# ...
</code></pre>
<p>不过,你可以做得更好。将独立的代码片段分离成可以调用的函数。如果两段代码(或者在您的例子中是四段)几乎完全相同,那么将它们抽象成一个接受参数的函数,而不是重复相同的代码四次。等等。在</p>
<p>但实际上,即使没有任何功能,也可以消除大部分重复:</p>
^{pr2}$
<hr/>
<p>我必须在上面<code>import operator</code>的唯一原因是得到那些<code>add</code>,<code>sub</code>等函数。这些都是微不足道的,所以你可以自己写:</p>
<pre><code>def add(x, y):
return x+y
# etc.
</code></pre>
<p>然后,不是这样:</p>
<pre><code>op, value = operator.add, 0
</code></pre>
<p>…这样做:</p>
<pre><code>op, value = add, 0
</code></pre>
<p>……其他三个也一样。在</p>
<p>或者您可以使用<code>lambda</code>来定义它们:</p>
<pre><code>op, value = (lambda x, y: x+y), 0
</code></pre>
<p>不过,你不应该做这两件事。定义<code>add</code>、<code>sub</code>、<code>mul</code>、和<code>truediv</code>是很简单的,更简单的是<em>而不是</em>定义它们。Python附带的“电池”是有原因的,如果你不使用电池,你就无缘无故地让你的生活(以及任何需要阅读、维护你的代码的人的生活)变得更加困难。在</p>