重复计算部分和精确字符串匹配

时间:2016-02-16 07:37:28

标签: python string while-loop match

我正在python中编写一个程序,它生成一个随机的字母串,让用户尝试猜测字符串(可能的字母R O Y G B或P)。随机字符串是四个字符长,并且在用户输入猜测之后,告诉用户有多少完全匹配,即右字母右边位置,以及多少部分匹配,即右字母错误位置。问题是,我的计算部分匹配的代码似乎重复计算完全匹配。例如,如果代码是RGPB,并且用户猜测RGYO,则它将报告2精确2部分。 关于如何最好地解决这个问题的任何见解?

partialMatches = 0
i = 0
while i < len(guess):
    p = 0
    while p < len(secret):
        if guess[i] == secret[p]:
            partialMatches = partialMatches + 1 
        p += 1
    i += 1

1 个答案:

答案 0 :(得分:0)

替代(我想更多的Pythonic)解决方案:

exact_matches = sum(1 for (x, y) in zip(guess, secret) if x == y)
partial_matches = len(set(secret) & set(guess)) - exact_matches