Тема: программирование на python. - Компьютерные вопросы
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

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

Регистрация
15 Авг 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
Здравствуйте! Писал код игры "виселицы" на 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}"!') # Выводим загаданное слово

 
Регистрация
6 Окт 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Слишком многа букав больше 3 букав не понимать. А если серьезно, то на фоне названий переменных не видно операций над ними, вам может и понятно, но для другого он трудно читаемый. И изучайте библиотеки, изобретать велосипед не лучшее решение
 
Регистрация
1 Окт 2013
Сообщения
75
Репутация
-1
Спасибо
0
Монет
0
ну вместо списка можно в интернете базу какую нибудь со словами найти
 
Регистрация
8 Сен 2013
Сообщения
78
Репутация
0
Спасибо
1
Монет
0
А если пользователь ввел букву, которую уже ранее вводил, что делать при этом?А если там несколько одинаковых букв, например в java? У тебя он только одну внесет. И то программа внесла первую 'a', но вывела текст, что нашел следующую, т.е. 4-ую по счету.
Не проще проверять наличие буквы таким способом, что за сложности учудил: if letter_user in word_secret:
for i in range(len(word_secret)):
if letter_user = word_secret:
letter = 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:
letters = letter_user
else: # Если в слове нет буквы пользователя
attempts -= 1
print(f"\nУ вас осталось {attempts} попыток!")
if attempts == 0: # Проверка на 0 попыток
print("~У вас закончились попытки!~")
print("~Вы проиграли!~")
break

print(f'\nЗагаданное слово было - "{word}"!') # Выводим загаданное слово
 
Сверху Снизу