Напишите функцию concate_password, которая будет открывать файл password.txt со списком слов, случайным образом выбирать два из них и сцеплять вместе для получения итогового пароля. Функция должна вернуть получившийся пароль.
При создании пароля исходите из следующих требований:
- в пароле должно быть от 7 до 10 символов,
- каждое из используемых слов должно быть длиной хотя бы в три буквы,
- сделайте первые буквы обоих слов заглавными, а остальные - строчными, чтобы легко можно было понять, где заканчивается одно и начинается другое.
Подсказка. При решении этой задачи, возможно, понадобится функция random.shuffle из модуля random, которая перемешивает список с паролями случайным образом.
Пример:
Если были из файла были случайно выбраны слова ‘bird‘ и ‘cat‘ (без кавычек), то пароль должен быть ‘BirdCat‘ (тоже без кавычек).
Answers & Comments
Ответ:
Для решения данной задачи необходимо выполнить следующие шаги:
Открыть файл "password.txt" с помощью функции open().
Прочитать содержимое файла в список с помощью метода readlines().
Использовать функцию random.sample() для выбора двух случайных слов из списка.
Объединить выбранные слова в одну строку с помощью метода join().
Сделать первые буквы обоих слов заглавными, а остальные - строчными с помощью методов capitalize() и lower() соответственно.
Вернуть полученный пароль.
Вот код функции concate_password():
import random
def concate_password():
with open("password.txt") as f:
words = [word.strip() for word in f.readlines()]
# Выбираем два случайных слова из списка
selected_words = random.sample(words, k=2)
# Объединяем слова в одну строку и делаем первые буквы заглавными
password = "".join(selected_words).capitalize()
# Делаем остальные буквы строчными
password = password[0] + password[1:].lower()
# Возвращаем полученный пароль
return password
Функция strip() удаляет пробельные символы в начале и конце каждой строки файла "password.txt". Функция random.sample() выбирает из списка words два случайных элемента и возвращает их в виде списка. Функция capitalize() делает первую букву строки заглавной, а функция lower() приводит все остальные буквы строки к нижнему регистру.
Объяснение:
File "run_tests.py", line 6, in
psw = concate_password()
File "/temp/executing/participantSolution.py", line 6, in concate_password
selected_words = random.sample(words, k=2)
File "/usr/lib/python3.2/random.py", line 302, in sample
raise ValueError("Sample larger than population")
ValueError: Sample larger than population
make: *** [run] Error 1