2016-01-23 3 views
1

Я сейчас делаю программу палача, но я застрял. Всякий раз, когда я ввожу правильное предположение для слова, я продолжаю получать объект «str» ошибки, не поддерживает назначение элемента.Python: Hangman TypeError: объект 'str' не поддерживает назначение предметов

Вот мой код:

import random 

def displayBoard(randomWord): 
    board = [] 
    for i in randomWord: 
     board.append(' _ ') 
    return ''.join(board) 

def gameGuesses(randomWord): 
    newBoard = displayBoard(randomWord) 
    print(newBoard) 
    mistakes = 6 
    count = 0 
    while not False and mistakes > 0: 
     letterInput = input("\nPlease input a letter: ").upper() 
     if letterInput in randomWord: 
      letter = randomWord.index(letterInput) 
      while count != letter: 
       count += 1 
       if count == letter: 
        >>>newBoard[count] = letterInput<<<#PROBLEM 


     else: 
      mistakes = mistakes - 1 
      print("Incorrect letter.",mistakes,"remaining.") 




wordList = ["Python","Hello","Random"] 
randomWord = random.choice(wordList).upper() 
gameGuesses(randomWord) 

Проблема заключается в newBoard [число] = letterInput. Как я должен заменить символ подчеркивания правильным введенным письмом?

+1

Возможный дубликат [ Объект 'str' не поддерживает назначение элемента в Python] (http://stackoverflow.com/questions/10631473/str-object-does-not-support-item-assignment-in-python) –

+0

Я уже посмотрел на это и это не помогает моему делу –

+0

Вы пытаетесь изменить строку - дублировать состояния, что это невозможно, и показывает альтернативы. Снятие кода с соответствующей проблемой является простым дублированием. –

ответ

1

newBoard - это строка и строки неизменяемый в Python - вот почему назначение элемента не допускается.

Вы должны построить новую строку. Например, если вы хотите заменить символ в позиции 4 (о) в 'helloworld', вы бы выпустить

>>> s = 'helloworld' 
>>> s = s[:4] + 'X' + s[5:] 
>>> s 
'hellXworld' 

Другим вариантом было бы использовать ByteArray:

>>> s = bytearray('helloworld')  
>>> print(s) 
helloworld 
>>> s[4] = 'X' 
>>> print(s) 
hellXworld 
+0

Спасибо, это помогает! –