我正在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
答案 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