Как сделать замену в строке
Пишу игру "виселица" на Python в Pydroid 3. Правила такие: один игрок загадывает слово, передает телефон другому игроку и он пытается отгадать слово по буквам (полностью правила можете почитать в Википедии). Вот мой код:
from os import system
pics = [
'''
|------
|/ |
|
|
|
=======
''',
'''
|------
|/ |
| Ô
|
|
========
''',
'''
|------
|/ |
| Ô
| |
|
========
''',
'''
|------
|/ |
| Ô
| /|
|
========
''',
'''
|------
|/ |
| Ô
| /|\\
|
========
''',
'''
|------
|/ |
| Ô
| /|\\
| /
========
''',
'''
|------
|/ |
| Ô
| /|\\
| / \\
========
'''
] # это картинки виселицы
word = input('Слово: ') # загаданное слово
word_len = len(word) # кол-во букв в слове
word_crypt = '_ ' * word_len # "зашифрованное" слово (знаки _ вместо букв)
letter_list = [] # список уже использованных букв
wrong_attempts = 0 # число неверных попыток
system('clear') # очистка экрана
while '_' in word_crypt:
print(pics[wrong_attempts])
print()
print(', '.join(letter_list))
print()
print(word_crypt)
print()
letter = input('Буква: ') # буква для отгадывания
letter_list.append(letter) # буква заносится в список
letter_pos = word.find(letter) # позиция буквы в слове
if letter_pos == -1:
wrong_attempts += 1 # если не угадал букву
else:
# вот тут я не знаю как написать
if wrong_attempts >= 6:
system('clear')
print(pics[6])
print()
print('ВЫ ПРОИГРАЛИ!') # проигрыш
break
elif not '_' in word_crypt:
system('clear')
print('ВЫ ВЫИГРАЛИ!') # выигрыш
break
else:
system('clear')
input() # приостановка программы
Проблемы:
- Нельзя загадать слово, где хотя бы одна буква повторяется (из-за
word.find(letter)). - Я не знаю как написать код чтобы он заменял
_наletterвword_crypt. Пробовал так:
word_crypt.replace('_', letter)
Но не работает
(Этот код должен быть там где в else у меня комментарий).
Помогите, пожалуйста, исправить мой код!
Ответы (1 шт):
Автор решения: Пушистик
→ Ссылка
Еще раз всем спасибо большое, все комментарии помогли, показываю свой рабочий код:
from os import system
pics = [
'''
|------
|/ |
|
|
|
=======
''',
'''
|------
|/ |
| Ô
|
|
========
''',
'''
|------
|/ |
| Ô
| |
|
========
''',
'''
|------
|/ |
| Ô
| /|
|
========
''',
'''
|------
|/ |
| Ô
| /|\\
|
========
''',
'''
|------
|/ |
| Ô
| /|\\
| /
========
''',
'''
|------
|/ |
| Ô
| /|\\
| / \\
========
'''
]
word = input('Слово: ')
word_len = len(word)
word_crypt = '_' * word_len
word_crypt_list = list(word_crypt)
letter_list = []
wrong_attempts = 0
system('clear')
while '_' in word_crypt_list:
print(pics[wrong_attempts])
print()
print(', '.join(letter_list))
print()
print(' '.join(word_crypt_list))
print()
letter = input('Буква: ')
letter_list.append(letter)
attempts = 0
for i in range(word_len):
if word[i] == letter:
word_crypt_list[i] = letter
attempts += 1
else:
continue
if attempts == 0:
wrong_attempts += 1
system('clear')
else:
system('clear')
if wrong_attempts >= 6:
system('clear')
print(pics[6])
print()
print('ВЫ ПРОИГРАЛИ!')
break
elif not '_' in word_crypt_list:
system('clear')
print('ВЫ ВЫИГРАЛИ!')
break
else:
system('clear')
input()