2014-03-31 35 views
0

我是初學者,我嘗試寫一個類似於hang man的程序。我被卡住了,因爲字符串是不可變的,我找不到解決這個問題的方法。我需要幫助,請幫我替換函數替換所有內容,而不是給定索引

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。取代(C [0], 「S」)。
當我打印出來,它會是這樣「SSS」它取代一切不僅僅是C [0]

回答

0

不要使用字符串。使用列表並在需要時轉換爲字符串:

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

謝謝你非常許多 – user3482351

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 _ _ _ _ _' 
0

使用一個真正的列表,而不是一個字符串是OK,做你想要的這裏,因爲你所有的輸入字符串很短:

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