2016-02-16 5 views
1

Я пишу программу в 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

Легкий, вычитают взыскивает с частичными. Или проверьте 'if guess [i] == secret [p] и i! = P'. – Amadan

+0

, конечно, не могу поверить, что я этого не замечал. благодаря – JJB

ответ

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