擅长:python、mysql、java
<p>你的直接问题是,你有一个平局的处理代码在同一个<code>if/elif</code>链中,作为另一个得分的处理。在</p>
<p>你会说这样的话:</p>
<pre><code>if tied
stuff
elif player == r
...
</code></pre>
<p>结果,当有平局时,游戏正确地循环直到没有平局。但是,is<strong>会跳过更新分数的代码,因为如果/elif/else就是这样工作的!在</p>
<p>一个直接的解决办法是打破if/elif链,并将领带处理放入单独的if块中:</p>
^{pr2}$
<hr/>
<p>话虽如此,让我再补充几点:</p>
<ol>
<li><p>将两个值按顺序分配给同一个变量:</p>
^{3}$
<p>这没有任何作用,因为第二个覆盖了第一个。你应该删除每一对中的第一行。</p></li>
<li><p>您可能应该编写一个函数,反复要求用户选择一个,直到它得到石头、布或剪刀。使用while循环。</p></li>
<li><p><a href="https://docs.python.org/3/library/random.html?highlight=choice#module-random" rel="nofollow">^{<cd2>} module</a>中有一个函数将从列表、元组或字符串中选择一个项并返回它。你可以用它让电脑直接选择r,p,s。</p></li>
<li><p>您可以通过预先确定结果来简化代码。假设你让电脑先选。如果电脑选“r”,你就知道“p”是赢,“s”是输。将胜负选择存储在一对变量中,所有测试都可以归结为一个测试:</p>
<pre><code>computer = computer_pick()
if computer == 'r':
winner = 'p'
computer = 'rock'
elif computer == 'p':
...
player = player_pick()
if tied ...
if player == winner:
print("Computer picked", computer, "- you win!")
else:
...
</code></pre></li>
</ol>