まず、return
ループ内にあるため、何度もループすることはありません。に変更します
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'
new_string
次に、毎回設定するだけでなく、実際にビルドする必要があります。list
aをビルドしてから、次の"".join
ようにします。
def random_characters(number):
i = 0
letters = [] # Place to put the letters
while (i < number) :
letters.append(random.choice(string.ascii_lowercase)) # <<< Add the letter
i = i + 1
return "".join(letters) # <<< Join the letters into one string
random_characters(3)
#>>> 'lgp'
次に、ループfor i in range(number)
の代わりに使用する必要があります。while
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'
また、リスト内包表記で短縮版を使用できます。
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'
これを実行したい場合は、いくつかの選択肢があります。対話型インタープリターでこれを実行できます。
%~> python -i random_characters.py
>>> random_characters(3)
'zgp'
print
または、ファイル内の結果にそれを伝えることができます:
print(random_characters(3)) # Python 3
print random_characters(3) # Python 2