#python
#python
Вопрос:
Вопрос заключается в следующем: » Создайте пароль, объединив 4 слова из 3 списков выше. Вывести пароль» В этом вопросе объединение означает объединение слов вместе. Мой код напечатан ниже, но мне любопытно, как его можно оптимизировать. Я уверен, что мне не нужно делать пароль списком. Не стесняйтесь включать любые другие оптимизации, которые я мог бы сделать. Спасибо!
import itertools
import random
nouns =[A large list of strings]
verbs = [A large list of strings]
adjs = [A large list of strings]
# Make a four word password by combining words from the list of nouns, verbs and adjs
options = list(itertools.chain(nouns, verbs, adjs))
password = []
for _ in range (4):
password.append(options[random.randint(0,len(options)-1)])
password = "".join(password)
print(password)
Ответ №1:
Кажется, в ваших спецификациях нет ничего, что различало бы части речи. Таким образом, у вас есть только один список слов для целей пароля.
word_list = nouns verbs adjs
Теперь вам просто нужно взять четыре случайных элемента из списка. Вам следует random
еще раз просмотреть документацию. sample
и shuffle
здесь полезны. Любой из них может захватить для вас 4 элемента.
pass_words = random.sample(word_list, 4)
или
random.shuffle(word_list)
pass_words = word_list[:4]
Наконец, просто объедините выбранные слова:
password = ''.join(pass_words)
Ответ №2:
Вы можете использовать простое добавление для объединения списков:
options = nouns verbs adjs
И вы можете использовать random.choice()
для выбора случайных элементов из списка:
for _ in range (4):
password.append(random.choice(options))
Ответ №3:
Несколько однострочных строк.
Вариант -1 :
print("".join(random.choice(nouns verbs adjs) for _ in range(4)))
Вариант -2 :
print("".join(random.sample(nouns verbs adjs, 4)))
Вариант-3 (если вам нужна хотя бы одна запись из глагола, существительного и прилагательного) :
print("".join(random.sample([random.choice(nouns),random.choice(verbs),random.choice(adjs),random.choice(nouns verbs adjs)], 4)))
Существует много таких однострочников с разницей в производительности.