我會用什麼代碼查找猜測在lettersInWord的指數值和改變這些的indeces「 - 」到猜測在lettersDisplayed?如何使用列表1中元素的索引更改列表2中的索引?
guess = 'o'
lettersInWord = ['n', 'o', 'o', 'n']
lettersDisplayed = ['-', '-', '-', '-']
我會用什麼代碼查找猜測在lettersInWord的指數值和改變這些的indeces「 - 」到猜測在lettersDisplayed?如何使用列表1中元素的索引更改列表2中的索引?
guess = 'o'
lettersInWord = ['n', 'o', 'o', 'n']
lettersDisplayed = ['-', '-', '-', '-']
guess = 'o'
word, disp = ['n', 'o', 'o', 'n'], ['-', '-', '-', '-']
print [guess if i == guess else j for i, j in zip(word, disp)]
輸出
['-', 'o', 'o', '-']
指定一個 「空白」 的字符串(在你的情況 「 - 」),然後使用列表理解來改變地方的項目。
guess = 'o'
blank = '-'
lettersInWord = ['n', 'o', 'o', 'n']
lettersDisplayed = [guess if x == guess else blank for x in lettersInWord]
print lettersDisplayed # ['-', 'o', 'o', '-']
print ''.join(lettersDisplayed) # -oo-
編輯:注意,這實際上只適用於一個「猜」,如果你想再次它將忽略你最初的猜測。如果你正在尋找多個猜測,那麼請看jonrsharpe的答案。
這將切換所有先前猜出的字母! – jonrsharpe
是的,你是對的,如果你猜不止一次。海報並沒有說明是否會有多個猜測,但在這種情況下,我認爲你的解決方案可能是最好的。 – Ffisegydd
謝謝你的回覆!我很驚訝,我能在這裏得到答案的速度有多快! – iOSPadawan
下面是一個簡單的選擇一些循環:
guess = 'o'
lettersInWord = ['n', 'o', 'o', 'n']
lettersDisplayed = ['-', '-', '-', '-']
listOfFinds = []
for idx, value in enumerate(lettersInWord):
if guess == value:
listOfFinds.append(idx)
for value in listOfFinds:
lettersDisplayed[value] = guess
print lettersDisplayed
輸出:
['-', 'o', 'o', '-']
我假設你想保留先前透露字母disp
每個guess
。在這種情況下,您可以使用:
blank = '-'
word = list("noon")
disp = [blank for char in word]
for guess in ['m', 'n', 'o']:
disp = [w if (d == blank and w == guess) else d
for w, d in zip(word, disp)]
print(guess, disp)
這保留了以前的猜測並揭示了新猜出的字母。
謝謝你的回覆!我很驚訝,我能在這裏得到答案的速度有多快! – iOSPadawan
我正試圖學習Python,並在我正在開發的Hangman程序的一部分上打了一堵牆。對於那些回答,謝謝。 – iOSPadawan