<p>首先,您的<code>return</code>在循环内,因此您永远不会循环多次。把它改成</p>
<pre><code>def random_characters(number):
i = 0
new_string = ''
while (i < number) :
new_string = random.choice(string.ascii_lowercase)
i = i + 1
return new_string # <<< Dedent
random_characters(3)
#>>> 'c'
</code></pre>
<p>然后您需要实际构建<code>new_string</code>,而不是每次都设置它。构建一个<code>list</code>,然后<code>"".join</code>它:</p>
^{pr2}$
<p>那么您应该使用<code>for i in range(number)</code>而不是<code>while</code>循环:</p>
<pre><code>def random_characters(number):
letters = []
for i in range(number): # <<< Deals with i for you.
letters.append(random.choice(string.ascii_lowercase))
return "".join(letters)
random_characters(3)
#>>> 'xay'
</code></pre>
<p>你可以用一个简短的版本来理解列表:</p>
<pre><code>def random_characters(number):
# MAGIC!
letters = [random.choice(string.ascii_lowercase) for i in range(number)]
return "".join(letters) # <<< Join the letters into one string
random_characters(3)
#>>> 'yby'
</code></pre>
<hr/>
<p>如果你想运行这个,你有几个选择。您可以在<strong>交互式</strong>解释器中运行:</p>
<pre><code>%~> python -i random_characters.py
>>> random_characters(3)
'zgp'
</code></pre>
<p>或者您可以告诉它<code>print</code>文件内的结果:</p>
<pre><code>print(random_characters(3)) # Python 3
print random_characters(3) # Python 2
</code></pre>