[英]Python- Replace all occurrences of letter at specific position on a string
嘗試用Python創建電視游戲節目“ Lingo”。
在游戲中,玩家試圖猜測五個字母的單詞。 他們從我隨機猜測一個五個字母的單詞開始。 然后,游戲板將亮起,顯示他們猜出的單詞與實際單詞如何匹配。
例如,如果真實單詞是“ gorge”,而玩家猜到“ eagle”,則棋盤將顯示“ e”和“ g”在真實單詞中,但相對於正確位置而言,位置不正確真正的單詞“峽谷”。 (g在[0]和[3]索引中,而在Eagle中,它們在[2]索引中)。
如果單詞是“ happy”,並且用戶猜到“ harpy”,則面板將顯示真實單詞中的三個字母,並且它們的位置正確。 (干草)。
在Python實現中,我強調一個字母是正確的,但是在錯誤的位置下有一個'〜'。 如果正確且位置正確,我會在前面加上“!” 在它下面。
重要功能如下:
wordGuess = input("Guess a letter: ")[0:5]
for letter in wordGuess:
if letter in realWord:
if wordGuess.find(letter) == realWord.find(letter)
//不知道從這里做什么
如果出現多個不正確的字母,並且其中一個字母與realWord中的字母位置不正確匹配,我該如何檢測呢?
例如,如果真實詞是“ lasts”並且有人猜到“ brass”,則黃銅中的第一個“ s”是正確的字母,但是位置不正確,而第二個“ s”是正確的字母和a正確的位置。
因此,實現函數的最佳方法是什么,該函數可以檢查字母是否正確並位於正確的位置(並用!表示),或者表示它是錯誤的位置帶有〜的正確字母。
要查找通用字母,而不考慮位置:
In [1]: set('harpy') & set('happy')
Out[1]: set(['a', 'h', 'p', 'y'])
要獲取一個布爾值標志,以指示每個“ harpy”字母是否在任何位置都以“ happy”形式出現:
In [17]: [l in 'happy' for l in 'harpy']
Out[17]: [True, True, False, True, True]
在上面的代碼中,可以用第一個代碼段中的已設置交集替換“ happy”。
最后,為每個位置獲取一個布爾標志,以指示字母是否位於正確的位置:
In [2]: [l==r for l,r in zip('happy','harpy')]
Out[2]: [True, True, False, True, True]
要將以上內容組合成一個完整的解決方案:
In [49]: real='lasts'
In [50]: guess='brass'
In [51]: exact=[l==r for l,r in zip(real,guess)]
In [52]: approx=[l in real for l in guess]
In [53]: chars=[[' ','~'],['!','!']]
In [54]: print guess, '\n', ''.join(chars[e][a] for e,a in zip(exact,approx))
brass
~~!
(如果您想知道使用布爾值索引到數組中,它們會隱式轉換為整數:False = 0和True = 1。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.