擅长:python、mysql、java
<p>第二种方法很聪明,但出于可读性考虑,我不推荐它:</p>
<p>让我们把代码分解一下</p>
<pre class="lang-py prettyprint-override"><code>
return ('I Win!!', 'Computer Wins!!', 'Tie War!!')[(w1>w2)-(w1==w2)]
</code></pre>
<p><strong>注意</strong>:<code>True</code>在Python中计算为<code>1</code>和<code>False</code>到<code>0</code><br/></p>
<h3>病例<br/></h3>
<p>如果<code>(w1 > w2)</code>为真(1),那么<code>(w1 == w2)</code>必然为假(0)<br/>
-&燃气轮机;[(w1>;w2)-(w1==w2)]<br/>
-&燃气轮机;[1-0]等于[1]<br/>
-&燃气轮机;因此<code>('I Win!!', 'Computer Wins!!', 'Tie War!!')[1]</code><br/>
-&燃气轮机;结果是<code>'Computer Win!!'</code><br/></p>
<p>如果<code>(w1 > w2)</code>为假(0),则<code>(w1 == w2)</code>必然为假(0)<br/>
-&燃气轮机;[(w1>;w2)-(w1==w2)]<br/>
-&燃气轮机;[0-0]等于[0]<br/>
-&燃气轮机;因此<code>('I Win!!', 'Computer Wins!!', 'Tie War!!')[0]</code><br/>
-&燃气轮机;结果是<code>'I win!'</code><br/></p>
<p>如果<code>(w1 > w2)</code>为假(0)而<code>(w1 == w2)</code>为真(1),则<br/>
-&燃气轮机;[(w1>;w2)-(w1==w2)]<br/>
-&燃气轮机;[0-1]等于[-1]<br/>
所以<code>('I Win!!', 'Computer Wins!!', 'Tie War!!')[-1]</code>给出了最后一项,即<code>'Tie War!!'</code></p>