Во-первых, ваш 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
и затем "".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
Это может помочь: [Что 'return' делать? Ничто никогда не возвращается] (http://stackoverflow.com/questions/19066925/what-does-return-do-nothing-is-ever-returned), а BTW ваш оператор 'return' не имеет отступов должным образом. –