簡體   English   中英

Python-替換字符串中特定位置上所有出現的字母

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM