У меня есть функция, которая генерирует случайное целое число и добавляет в список до тех пор, пока число не будет сгенерировано снова, и если оно совпадает с числом в списке, то возвращается список.
from random import randint
def randomizerfinder(length):
mylist = []
is_done = False
while (is_done == False):
r = randint(1,length)
is_found = False
for n in mylist:
if (n==r):
is_found = True
break
if (is_found == False):
mylist.append(r)
if (len(mylist) == length):
is_done=True
return mylist
x=randomizerfinder(10)
print (x)
Я новичок в питоне. Пожалуйста, предложите, как я могу написать это точно в меньших строках кода.
Я предполагаю, что ваш отступ отключен, возврат не должен быть внутри цикла while?
Я голосую за закрытие этого вопроса, потому что он принадлежит другому сообществу Code Golf.
Пожалуйста, разместите свой вопрос на Code Review Stack Exchange.
Как указано в комментариях, вы должны использовать ключевое слово in
, чтобы уменьшить if
и оценки, которые вы делаете:
from random import randint
def randomizerfinder(length):
mylist = []
r = randint(1,length)
while (r not in mylist) and (length > len(mylist)):
mylist.append(r)
r = randint(1,length)
return mylist
x=randomizerfinder(10)
print(x)
Выходы:
[2, 5, 8, 4, 10, 7]
Вы должны использовать ключевое слово
in
для проверки