Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

RU_kesTOP Ученик (107), на голосовании 1 месяц назад
Здравствуйте! Писал код игры "виселицы" на python. Мне кажется он не очень. Как сделать код лучше? Вот он:
 from random import randint 

words = ["python", "java", "javascript", "rust"] # Список слов
word_secret = words[randint(0, 3)] # Случайное слово
word = word_secret # Переменная для хранения неизменённого случайного слово
attempts = 5 # Попытки
letters = ["_" for _ in range(len(word_secret))] # зашифрованное слово


# Функция для обновления зашифрованного слова
def update_encrypted_word(letters_func, word_secret_func, letter_user_func):
letters_func.pop(word_secret_func.find(letter_user_func))
letters_func.insert(word_secret_func.find(letter_user_func), letter_user_func)
word_secret_func = (word_secret_func[:word_secret_func.find(letter_user_func)] + "_" + word_secret_func[word_secret_func.find(letter_user_func) + 1:])
return [letters_func, word_secret_func]


# Цикл будет работать пока пользователь не введёт все буквы слова
while "".join(letters) != word:
letter_user = input("\nВведите букву: ")

if letter_user in word_secret: # Есть ли в слове буква пользователя
letters, word_secret = update_encrypted_word(letters, word_secret, letter_user)[0], update_encrypted_word(letters, word_secret, letter_user)[1]
print(f"Вы угадали {word_secret.find(letter_user) + 1} букву!")
print("".join(letters))
else: # Если в слове нет буквы пользователя
attempts -= 1
print(f"\nУ вас осталось {attempts} попыток!")
if attempts == 0: # Проверка на 0 попыток
print("~У вас закончились попытки!~")
print("~Вы проиграли!~")
break

print(f'\nЗагаданное слово было - "{word}"!') # Выводим загаданное слово
Голосование за лучший ответ
nikolajminenko Гуру (2538) 2 месяца назад
Это случаем не нейросеть писала?
AlfaУченик (97) 2 месяца назад
мне тоже так показалось
RU_kesTOPУченик (107) 2 месяца назад
Нет. Он не очень?
RU_kesTOPУченик (107) 2 месяца назад
Почему вам показалось, что код сгенерировала нейросеть?
Alfa Ученик (97) 2 месяца назад
ну вместо списка можно в интернете базу какую нибудь со словами найти
Олег Бебрович Профи (851) 2 месяца назад
Слишком многа букав больше 3 букав не понимать. А если серьезно, то на фоне названий переменных не видно операций над ними, вам может и понятно, но для другого он трудно читаемый. И изучайте библиотеки, изобретать велосипед не лучшее решение
Хлебушек Оракул (76328) 2 месяца назад
  • А если пользователь ввел букву, которую уже ранее вводил, что делать при этом?
  • А если там несколько одинаковых букв, например в java? У тебя он только одну внесет. И то программа внесла первую 'a', но вывела текст, что нашел следующую, т.е. 4-ую по счету.

Не проще проверять наличие буквы таким способом, что за сложности учудил:
 if letter_user in word_secret:
for i in range(len(word_secret)):
if letter_user = word_secret[i]:
letter[i] = letter_user
Итого пока:
 from random import randint  

words = ["python", "java", "javascript", "rust"] # Список слов
word_secret = words[randint(0, 3)] # Случайное слово
attempts = 5 # Попытки
letters = ["_" for _ in range(len(word_secret))] # зашифрованное слово

# Цикл будет работать пока пользователь не введёт все буквы слова
while "".join(letters) != word_secret:
letter_user = input("\nВведите букву: ")

if letter_user in word_secret: # Есть ли в слове буква пользователя
for i in range(len(word_secret)):
if letter_user == word_secret[i]:
letters[i] = letter_user
else: # Если в слове нет буквы пользователя
attempts -= 1
print(f"\nУ вас осталось {attempts} попыток!")
if attempts == 0: # Проверка на 0 попыток
print("~У вас закончились попытки!~")
print("~Вы проиграли!~")
break

print(f'\nЗагаданное слово было - "{word}"!') # Выводим загаданное слово
tzi izi Знаток (460) 2 месяца назад
Переписать в ООП стиле
Похожие вопросы