擅长:python、mysql、java
<p>我将做一个简化的用例来解释为什么你的代码不能像你想的那样工作。假设我们只想要1分。将count设置为0,并在循环之前读取第一个输入。所以你已经在循环开始之前接受了输入。此时,计数仍然设置为0。因此,开始循环<code>count != 1</code>。这将获取在循环外部收集的输入并添加到统计信息中。然后它将计数增加1,这样计数现在等于1。然后再次请求输入。第二个输入已经给出(即使您只需要一个匹配)。该输入存储在x中,循环的第一次迭代结束。循环条件<code>count!=1</code>现在被破坏,因此循环在1次迭代后完成。所以分配给x的第二个输入永远不会添加到stats中。这是正确的行为。问题是你的代码结构意味着你会要求1个更多的输入,但决不计算最后一个,仍然得到30个匹配</p>
<p>相反,您可以使用一个范围来生成X个迭代次数。您的代码也可以被清理,因为每个if语句中都有很多行,这些行可以从if中删除,只在循环中编写一次</p>
<pre><code>scores=0
win_number = 0
game_number = 0
for _ in range(3):
x = int(input('score: '))
scores += x
if x == 3 or x == 1:
win_number=win_number+1
if x == 3 or x == 0:
game_number += 1
print(scores,win_number,game_number)
</code></pre>
<p>控制台</p>
<pre><code>score: 3
score: 1
score: 0
4 2 2
</code></pre>