RU_kesTOP
Ученик
(115),
на голосовании
1 месяц назад
Здравствуйте! Я написал код игры виселица на 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