我正在編寫一個蟒蛇遊戲作爲大學項目的一部分,我試圖用string.replace(舊的,新的)用空格替換空格(_)。雖然不是使用實際的字符串,但我正在嘗試爲「舊」和「新」使用變量。這是我到目前爲止已經得到了這一點:如何使用迭代和變量替換字符串中的字符? (Python)
if validGuess == 'true':
if guess in word:
for letter in word:
if letter == guess:
word.replace(letter, guess)
else:
missNum = (missNum + 1)
else:
tryNum = (tryNum - 1)
但是,它不工作。我沒有得到任何錯誤,它根本不會取代空白。
我在這裏做錯了什麼?有沒有更好的方法來實現我正在做的事情?
- 編輯 -
我試圖執行@Peter西湖的解決方案(這在我看來,最優雅的),但我遇到了一個問題。我有一段代碼將隨機選擇的字轉換爲下劃線:
#converting word to underscores
wordLength = len(word)
wordLength = (wordLength - 1)
print(wordLength) #testing
for i in range(0,wordLength):
wordGuess = (wordGuess + '_')
print(wordGuess)
而這似乎工作正常。這裏是字母替代代碼:
if validGuess == 'true':
wordGuess = ''.join([letter if guess == letter else wordGuess[pos]
for pos, letter in enumerate(word)])
if guess not in word:
tryNum = (tryNum - 1)
print(wordGuess)
然而,這裏是輸出:
Guess a letter: a
test
Traceback (most recent call last):
File "G:\Python\Hangman\hangman.py", line 60, in <module>
for pos, letter in enumerate(word)])
File "G:\Python\Hangman\hangman.py", line 60, in <listcomp>
for pos, letter in enumerate(word)])
IndexError: string index out of range
字符串索引超出範圍?那是什麼意思?
我不知道你的情況,'如果信==猜'你需要在這裏取代什麼? –
你可以把你的輸入和預期的輸出。 –
「字符串索引超出範圍」意味着您試圖從字符串末尾獲取字母,這是因爲您從wordLength中減去1。 'range(x,y)'給出從x到y-1的所有數字,所以不需要再次減1。更簡單的方法是:'wordGuess ='_'* len(word)'。 –