2015-02-28 4 views
-1

Так что у меня functionguess_check(guess), который вызывается с помощью prompt()functionstring.replace() не кажется, что работать

Prompt() вызывает guess_check() так что догадка является одна работа string, содержащая знак алфавита.

слово переменная = "placeholder"

Ниже приведен код, который у меня возникают проблемы с:

if guess in word: 
    word.replace(guess, '*') 
print word 

Если я догадка = «а» я бы предвосхитить слово = «пл * ceholder », но это не меняется.

Почему переменная слова не изменяется, и как я могу ее изменить, как я хочу?

+0

@PadraicCunningham: мы должны иметь первичный источник для всех этих дублей [Как лучше всего перенаправить все дубликаты «Почему не <метод строки Python> что-либо сделать/назначить результат»?] (http://meta.stackoverflow.com/questions/287093/how-best-to-redirect-all- дубликатами-оф-почему-питон-техника его подводит-струнной-метод-ду-любому) – smci

ответ

3

Строки неизменны, так что вам нужно переназначить результат вызова метода:

if guess in word: 
    word = word.replace(guess, '*') 
print word 

Как правило, методы на неизменные объекты (строки, кортежи и т.д.), как правило, возвращают новое значение, тогда как методы на изменяемые объекты (списки, dicts, наборы и т.д.) изменить объект на месте, поэтому вы можете сделать

>>> l = [3, 2, 4, 1] 
>>> l.sort() 
>>> l 
[1, 2, 3, 4] 

, но не (что ошибка еще один типичный для начинающих)

>>> l = l.sort() 

потому list.sort() ничего (что означает, что она возвращает None) не возвращается, так что линия будет назначать None к l:

>>> print l 
None 
Смежные вопросы