50. Случайный пароль из двух слов.

(открыть в новой вкладке)

Условие:

Создание пароля посредством генерирования случайных символов может обернуться сложностью в запоминании полученной относительно надежной последовательности. Некоторые системы создания паролей рекомендуют сцеплять вместе два слова на английском языке, тем самым упрощая запоминание заветного ряда символов – правда, в ущерб его надежности.
Напишите программу, которая будет открывать файл со списком слов, случайным образом выбирать два из них и сцеплять вместе для получения итогового пароля. При создании пароля исходите из следующего требования: он должен состоять минимум из восьми символов и максимум из десяти, а каждое из используемых слов должно быть длиной хотя бы в три буквы. Кроме того, сделайте заглавными первые буквы обоих слов, чтобы легко можно было понять, где заканчивается одно и начинается другое. По завершении процесса полученный пароль должен быть отображен на экране.
Только в примере я буду обрабатывать не английские буквы, а русские.
Предлагаю воспользоваться готовым файлом, который называется pushkin.txt (это Сказка о мертвой царевне и о семи богатырях): ⇒ А.С. Пушкин
Программа должна запускаться из командной строки и получать файл pushkin.txt в качестве аргумента.

Код:

from sys import argv
from random import choice

try:
    script, first = argv         
    buf = open(f"./{first}", "r")       
    text = buf.read()                                                                                           # прочитаем текст сразу весь
    text = text.replace("\n", "")                                                                               # уберём переносы строк
    text = text.lower()                                                                                         # сделаем все буквы в нижнем регистре
    stay = " "                                                                                                  # часть символов, кот. не будем убирать из текста
    result = ""                                                                                                 # сюда будем копить модифицированный текст
    for i in text:                                  
        if i in stay or ("а" <= i <= "я"):                                  
            result += i                                 
    result = result.split(" ")                                                                                  # так создадим список из текста, где разделитель " "
    result = [i for i in result if 3 <= len(i) <= 7]                                                            # модифицируем список, где все элементы от 3 символов до 7
    result = [i.capitalize() for i in result]                                                                   # модифицируем список, теперь все элементы списка начинаются с заглавной буквы
    element_1 = choice(result)                                                                                  # первый элемент    
    element_2 = choice([i for i in result if ((8 - len(element_1)) <= len(i) <= (10 - len(element_1)))])        # второй элемент
    password = element_1 + element_2
    print(password)
except:
    print("Имя файла не существует или слишком много аргументов.")