<p>你的诊断不正确。如果<code>die3</code>等于<code>die1</code>或{<cd3>},则最后一个语句<em>将</em>匹配:</p>
<pre><code>>>> die1, die2 = 1, 2
>>> die3 = die1
>>> die3 == die1 or die3 == die2
True
>>> die3 = die2
>>> die3 == die1 or die3 == die2
True
</code></pre>
<p>但是,如果<code>die1</code>大于<code>die2</code>你的<em>第一个</em><code>elif</code>匹配,但与{<cd1>}的比较有缺陷:</p>
^{pr2}$
<p>而且从来没有印刷过任何东西。你需要理清那个案子的逻辑。在</p>
<p>因为你只有三种不同的结果:赢、输和命中,你可以把整个过程简化为:</p>
<pre><code>if die1 < die3 < die2:
print('\n*** You win! ***')
elif die3 == die1 or die3 == die2:
print('\n*** You hit the post - You lose double your bet! ***')
else:
print('\n*** Sorry - You lose! ***')
</code></pre>
<p>请注意,我使用<a href="http://docs.python.org/2/reference/expressions.html#not-in" rel="nofollow">chained comparisons</a>进一步简化了第一个<code>if</code>表达式。您还确保<code>die1</code>低于<code>die2</code>,因此对<code>die2 < die3 < die1</code>的测试是<em>始终是<code>False</code>。在</p>
<p>另一个注意事项:<code>==</code>应该是可传递的,所以<code>die1 == die2 or die2 == die1</code>是多余的。您可以将其简化为<code>die1 == die2</code>。在</p>
<p>简化整个计划:</p>
<pre><code>import random
die1 = random.randint(1,10)
die2 = random.randint(1,10)
if die1 > die2:
die1, die2 = die2, die1
print ('Die 1:', die1,' Die 2:', die2,)
if die1 == die2:
print('Even-steven!')
else:
print("Not the same, let's play!")
die3 = random.randint(1,10)
print ('Die 3:', die3)
if die1 < die3 < die2:
print('\n*** You win! ***')
elif die3 == die1 or die3 == die2:
print('\n*** You hit the post - You lose double your bet! ***')
else:
print('\n*** Sorry - You lose! ***')
print ('Thanks for playing!')
</code></pre>