Как мне составить список такой же длины, что и строка для моей игры палач? - PullRequest
0 голосов
/ 03 сентября 2018

Я пишу игру "Палач" и не могу понять, как учитывать слова различной длины, и мой код, похоже, не работает.

Вот шаги:

  1. Слово выбирается случайным образом из списка строк
  2. Плата построена по типу ['_','_','_','_','_','_']
  3. Пользователь угадывает букву
  4. Заменить доску любыми совпадениями в слове на основе ввода
  5. Завершить игру, когда ходы закончились или буква была найдена

word = random.choice(i)
guesses = 0
turns = 11
a = [['_']*len(word)]
print(a)

print ( word)
while turns > 0:
  letter = input('Enter a letter:')
  for i in range (0, 6):
      if word[0][i] == letter:
          a[0][i] = letter
          print(a)

  if a == word:
      turns -= 1
      print("You won. ")
  else :
      turns -= 1

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Рабочий пример:

word = "dead"
guesses = 0
turns = 11
a = ["_" for i in range(0,len(word))]
print(a)

print (word)
while turns > 0:
    letter = input('Enter a letter:')
    for i in range (0, len(word)):
        if word[i] == letter:
            a[i] = letter
    print(a)

    if "".join(a) == word:
        print("You won.")
        break
    turns -= 1
0 голосов
/ 03 сентября 2018

Я согласен с @JBallin, но вместо

for i in range (0, len(word)):

вы можете использовать

for index,ch in enumerate(word):

где индекс - от 0 до длины слова, а ch - сам символ

0 голосов
/ 03 сентября 2018

Вам нужно перебрать всю длину word вместо только 6 букв:

for i in range (0, len(word)):

Не помещайте a в список, чтобы получить желаемый формат:

a = ['_']*len(word)
print(a) # ['_','_','_','_','_','_']

В вашем цикле вы должны просто получить доступ к i напрямую

if word[i] == letter:
    a[i] = letter

Убедитесь, что игра окончена, соединив список букв в строку:

print(''.join(['h', 'i']) # 'hi'

if ''.join(a) == word:

Если они выиграли, break из цикла while:

print("You won. ")
break

Для стиля добавьте пробел после приглашения на ввод:

letter = input('Enter a letter: ')

Кроме того, удалите переменную guesses, если вы ее не используете. И не print(word) (как только вы закончите отладку).


ПРИМЕЧАНИЕ. Предполагается, что word - это строка, а не список строк. Я считаю, что это лучшая реализация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...