繁体   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