[英]Double counting partial and exact string matches
我正在用python編寫一個程序,該程序生成一個隨機的字母字符串,並讓用戶嘗試猜測該字符串(可能的字母為ROYGB或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
替代(我想更多的是Pythonic的)解決方案:
exact_matches = sum(1 for (x, y) in zip(guess, secret) if x == y)
partial_matches = len(set(secret) & set(guess)) - exact_matches
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.