<p>问题是<code>while</code>-检查只在每个循环的开始处进行。因此,如果<code>zahl</code>大于<code>10000</code>在<code>zahl * 2</code>之后,它仍将被打印并添加到<code>liste</code>。如果将<code>while</code>终止条件更改为<code>True</code>,并在<code>zahl</code>的值大于<code>10000</code>时使用<code>break</code>-语句从内部中断while循环,则应该会得到所需的结果</p>
<p>另外,不需要使用<code>zahl_neu</code>,您可以只使用<code>zahl</code>,这样就可以了</p>
<p>试试这个:</p>
<pre class="lang-py prettyprint-override"><code>import statistics
def verdoppeln(zahl):
liste = []
if zahl > 10000:
print("Zahl nicht gültig.")
else:
print(zahl)
while True: # Changed the termination condition to True, in other words, never stop
zahl *= 2
if (zahl >= 10000): # Added termination condition from inside the loop
break
print(zahl)
liste.append(zahl)
print("Zur Kontrolle: Summe = ", sum(liste), "Anzahl: ", len(liste))
if (len(liste) >= 1): # statistics.mean need liste to have at least one element
print("Mittelwert: ", statistics.mean(liste))
verdoppeln(154)
</code></pre>
<p>这将输出:</p>
<pre><code>154
308
616
1232
2464
4928
9856
Zur Kontrolle: Summe = 19404 Anzahl: 6
Mittelwert: 3234
</code></pre>