替换函数替换所有内容,而不是给定的索引

时间:2014-03-31 18:38:32

标签: python

我是初学者,我尝试写一个类似挂人的程序。我卡住了,因为字符串是不可变的,我找不到解决这个问题的方法。我需要帮助,请帮帮我

words=("cat", "dog", "animal", "something", "whale", "crocodile", "lion", "summer", "boston", "seattle")
the_word=random.choice(words)
#print(the_word)
a=len(the_word) #number of words
blanks="_"*a
c=' '.join(blanks)#blanks seperated
print("This is a word with",a,"letter")
print("\t", c)

当我尝试更换出现的错误信息时,如c [0] =“s”
我知道有替换功能,我试过这样的ipu = c.replace(c [0],“s”)。
当我打印它时,结果就像这样的“它取代了所有东西而不仅仅是c [0]

3 个答案:

答案 0 :(得分:1)

假设word是要猜的词,guessed已经尝试过的字母:

>>> guessed = ['a', 'b', 'c']
>>> word = 'cat'
>>> ' '.join (c if c in guessed else '_' for c in word)
'c a _'
>>> word = 'crocodile'
>>> ' '.join (c if c in guessed else '_' for c in word)
'c _ _ c _ _ _ _ _'

答案 1 :(得分:0)

不要使用字符串。使用列表并在需要时转换为字符串:

>>> c = ['_' for i in range(a)]
>>> c[0] = 's'
>>> ' '.join(c)
's _ _ _ _ _ _ '

答案 2 :(得分:0)

使用真实列表而不是字符串就可以了,你可以在这里做你想要的,因为所有的输入字符串都很短:

>>> blanks = ['_'] * 5
>>> ' '.join(blanks)
'_ _ _ _ _'
>>> blanks[1] = 'c'
>>> ' '.join(blanks)
'_ c _ _ _'