Тема: программирование на python - Общение Python мододелов
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Тема: программирование на python

Регистрация
22 Авг 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Здравствуйте! Я написал код генератора паролей по шаблону на python. Хочу услышать мнение от программистов на python. Вот код: from random import choice



digits = "0123456789" # цифры.

vowel_lowercase_letters = "AEIOUY" # Заглавные гласные буквы английского языка.

vowel_uppercase_letters = "aeiouy" # Строчные гласные буквы английского языка.

consonant_lowercase_letters = "bcdfghjklmnpqrstvwxz" # Строчные согласные буквы английского языка.

consonant_uppercase_letters = "BCDFGHJKLMNPQRSTVWXZ" # Заглавные согласные буквы английского языка.

punctuation = "#$&@_" # Специальные символы.

list_password = [] # набор паролей.



# Цикл будет работать пока пользователь не введёт шаблон правильно.

while True:

sample_password = input("Введите шаблон для генерации пароля: ")

for letter in sample_password:

if letter.isalpha() and letter.lower() not in "aeiouybcdfghjklmnpqrstvwxz":

print("\nВ вашем шаблоне должны быть только английские буквы!")

break

else:

break





# Функция для возвращения символа по шаблону.

def check_symbol(letter_func):

if letter_func in consonant_lowercase_letters:

return choice(consonant_lowercase_letters)

elif letter_func in consonant_uppercase_letters:

return choice(consonant_uppercase_letters)

elif letter_func in vowel_lowercase_letters:

return choice(vowel_lowercase_letters)

elif letter_func in vowel_uppercase_letters:

return choice(vowel_uppercase_letters)

elif letter_func in digits:

return choice(digits)

elif letter_func in punctuation:

return choice(punctuation)

else:

return letter_func





# Функция для вычисления сколько получиться сгенерированных паролей.

def check_count_password(samply_password_func):

if (len(samply_password_func) == 1 and (samply_password_func not in vowel_uppercase_letters + punctuation +

vowel_lowercase_letters + consonant_lowercase_letters + consonant_uppercase_letters + digits)):

return ["Из-за шаблона вашего пароля получилось сгенерировать только 1 новый!:", 1]

elif (len(samply_password_func) == 1 and (samply_password_func not in vowel_uppercase_letters +

vowel_lowercase_letters + consonant_lowercase_letters + consonant_uppercase_letters + digits)):

return ["Из-за шаблона вашего пароля получилось сгенерировать только 4 новых!:", 4]

else:

return ["Пароли:", 10]





# Главный цикл.

while True:

password = ""



# Создание пароля.

for letter in sample_password:

password += check_symbol(letter)



# Если такой пароль не был сгенерирован он будет добавляться в список .

if password not in list_password:

list_password.append(password)



# Если сгенерированных паролей достаточно мы будем выходить из цикла.

if len(list_password) == check_count_password(sample_password)[1]:

print(f"\n{check_count_password(sample_password)[0]}")

break



print(*list_password, sep="\n")

 
Регистрация
30 Ноя 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
Код нормальный, но я уверен что есть готовые решения. Велосипед это плохая практика
 
Регистрация
8 Июл 2013
Сообщения
87
Репутация
10
Спасибо
0
Монет
0
как же много if, elif. По коду можно сказать, что его написал откровенно не профессионал. 100% его можно оформить элегантнее не влезая if-else hell
 
Регистрация
31 Мар 2013
Сообщения
97
Репутация
0
Спасибо
0
Монет
0
Зачем тебе этот высокоуровневый кал? Крыша же поедет
 
Сверху Снизу