<p>如果你想让程序更接近你的程序,你需要先修复程序中的一些问题——它根本就不运行。Python区分大小写,因此<code>mylist2</code>和{<cd2>}是不同的。通篇使用相同的拼写。类似地,<code>false</code>不是Python内置的-<code>False</code>是。在</p>
<p>解决这些问题,我们得到:</p>
<pre><code>import random
def randomNumber2(n):
myList2 = []
needMoreNumbers2 = True
while (needMoreNumbers2):
randomNumber2 = int(random.random() * 500)
myList2.append(randomNumber2)
n >= n - 100
if (n <= 500):
needMoreNumbers2 = False
return myList2
</code></pre>
<p>现在不管传递给<code>n</code>什么,只要<code>n</code>是<;=500,它返回一个包含单个随机整数的列表,从0到499(包括0)。如果<code>n</code>大于500,它将永远运行(无限循环)。你知道为什么吗?^如果原始<code>n</code>为<;=500,则{<cd8>}始终为true,否则为false。您的<code>n >= n - 100</code>不执行任何可见的操作(它只是将<code>n</code>与{<cd12>}进行比较,并始终返回true,该值被忽略)。在</p>
<p>因此,请采纳建议,将<strong>转向</strong>更合理的Python习惯用法。以下是一种更容易理解的方法:</p>
^{pr2}$
<p>Progress;-)现在我们至少得到一个带有<code>n</code>随机整数的列表。它们不在您想要的范围内,但是:<code>int(random.random() * 500)</code>返回一个0到499范围内的整数(包括0到499)。如果你想让他们在100到500之间,最好的方法是做<code>random.randint(100, 500)</code>,就像别人已经告诉你的那样。<code>100 + int(random.random() * 400)</code>是一种更接近原始代码的等效方法,因此让我们尝试一下:</p>
<pre><code>import random
def randomNumber2(n):
myList2 = []
while len(myList2) < n:
randomNumber2 = 100 + int(random.random() * 400)
myList2.append(randomNumber2)
return myList2
</code></pre>
<p>为了达到最小值,最好在结尾处做<code>min(myList2)</code>。这不仅是正确的,而且比你自己编写的任何代码都要快。如果你想自己动手,有一种方法:</p>
<pre><code>import random
def randomNumber2(n):
myList2 = []
smallest = None
while len(myList2) < n:
randomNumber2 = 100 + int(random.random() * 400)
myList2.append(randomNumber2)
if smallest is None or randomNumber2 < smallest:
smallest = randomNumber2
assert smallest == min(myList2)
return myList2
</code></pre>
<p>F J给出的答案是,最有经验的Python是如何编写代码的。在</p>