<p>代码的问题在于<code>if</code>语句应该如下所示:</p>
<pre><code>if color1 == "Brown" or color1 == "brown":
...
</code></pre>
<p>这是因为“brown”是一个非空字符串,所以它返回<code>True</code>,这意味着你的<code>if</code>条件将始终为真。所以,它一直输入if语句,直到到达最后一个语句为止。在</p>
<p>下面是我们如何纠正这个错误:</p>
^{pr2}$
<p>让我们试着运行这个程序(手动逐行查看发生了什么)。如果<code>color1 = "brown"</code>,那么我们将在<code>5</code>行输入<code>if</code>语句。然后我们转到<code>6</code>行。这意味着现在<code>color1</code>被定义为5。因此,<code>color1</code>永远不能是“Red”或“Red”。另外,如果<code>color1</code>不是“brown”或“brown”,那么它将转到具有相同缩进的下一行,或者<code>11</code>,这意味着它永远不会检查红色和橙色。在</p>
<p>你想完成的事情可以这样做:</p>
<pre><code>if color1 == "brown" or color1 == "Brown":
color = 5
if color1 == "brown" or color1 == "Brown":
color1 = 6
if color1 == "brown" or color1 == "Brown":
color1 = 3
</code></pre>
<p>现在,这里的一个问题是,如果我们更改第2行或第4行中color1的值,那么剩余的条件可能是真的,即使您不想再次检查它们(例如:<code>if color==1: color=2; if color==2: color=1</code>将color重置为1,因为第二个条件再次为真)。这就是为什么推荐<code>elif</code>或{<cd14>},使我们的新程序:</p>
<pre><code>if color1 == "brown" or color1 == "Brown":
color = 5
elif color1 == "brown" or color1 == "Brown":
color1 = 6
elif color1 == "brown" or color1 == "Brown":
color1 = 3
</code></pre>