#python #python-3.x
#python #python-3.x
Вопрос:
Когда я использую слово с двумя одинаковыми буквами (например, «шикарный»), предположение активирует только 1 букву за раз. Как я могу это исправить?
l1=input('Input your (lowercase) letter:')
l2=input('Input your (lowercase) letter:')
l3=input('Input your (lowercase) letter:')
l4=input('Input your (lowercase) letter:')
l5=input('Input your (lowercase) letter:')
l6=input('Input your (lowercase) letter:')word=[l1,l2,l3,l4,l5,l6]
n1=''
n2=''
n3=''
n4=''
n5=''
n6=''
show=[n1,n2,n3,n4,n5,n6]
fail=0
good=0
while fail<=6 and good<6:
guess=input('Guess a letter...')
if guess in word:
print('Right!')
good=good 1
if guess==l1:
n1=guess
elif guess==l2:
n2=guess
elif guess==l3:
n3=guess
elif guess==l4:
n4=guess
elif guess==l5:
n5=guess
elif guess==l6:
n6=guess
show=[n1,n2,n3,n4,n5,n6]
else:
print('No.')
fail=fail 1
print(show)
print(word)
if fail==7:
print('Executioner wins!')
else:
print('Prisoner wins!')
Чтобы уточнить, я не могу угадать букву дважды, чтобы показать все ее экземпляры.
Ответ №1:
Что ж, в вашем коде есть много вещей, которые не являются оптимальными, но вот небольшое улучшение (которое также не является оптимальным). Я использовал цикл for для поиска всех букв, которые соответствуют предположению.
num_letters = 6
word_to_guess = []
for _ in range(num_letters):
word_to_guess.append(
input('Input your (lowercase) letter:').lower().strip())
word_to_show = ['?', ] * num_letters
fail = 0
good = 0
while fail <= num_letters and good < num_letters:
guess = input('Guess a letter...').lower().strip()
if guess in word_to_guess:
print('Right!')
for i, letter in enumerate(word_to_guess):
if guess == letter:
good = 1
word_to_show[i] = letter
else:
print('No.')
fail = 1
print(word_to_show)
print('word_to_guess', word_to_guess)
print('word_to_show', word_to_show)
if fail == 7:
print('Executioner wins!')
else:
print('Prisoner wins!')
У вас это работает?