2016-03-04 2 views
4

Моей цель:Проверьте, совпадают ли два элемента в списке?

В игре Lingo, есть скрытое слово длиной пяти символов. Объект игры состоит в том, чтобы найти это слово, угадывая, и в ответ получают два вида подсказок: 1) персонажи, которые являются полностью правильными, относительно личности, а также позиции, и 2) символы которые действительно присутствуют в слове, но которые помещены в неправильное положение . Напишите программу, с помощью которой можно играть в Lingo. Используйте квадратные скобки для обозначения символов правильно в том смысле, 1), и обычные скобки для обозначения символов правильно в смысле 2)

Текущий код:

def lingo(): 
    import random 
    words = ['pizza', 'motor', 'scary', 'motel', 'grill', 'steak', 'japan', 'prism', 'table'] 
    word = random.choice(words) 
    print word 
    while True: 
     guess = raw_input("> ") 
     guess = list(guess.lower()) 
     word = list(word) 
     for x in guess: 
      if x in word: 
       if x == word[word.index(x)]: 
        guess[guess.index(x)] = "[" + x + "]" 
       else: 
        guess[guess.index(x)] = "(" + x + ")" 
     print guess 

lingo() 

В настоящее время, если слова имеют общую букву, она помещает букву в квадратные скобки, независимо от того, имеет ли она одну и ту же позицию или нет.

Примеры:

ПРАВИЛЬНО: - Слово: Table - Моя догадка: Cater - ВЫВОД: C[a](t)(e)r

НЕПРАВИЛЬНО: - Слово: Japan - Мой Guess: Ajpan (Обратите внимание на переключение между a и j, я сделал это нарочно). - ВЫВОД: [A][j][p][a][n] (должно быть (a)(j)[p][a][n])

+0

Так что вы можете дать нам несколько входов образцов, выходы, которые вы ожидаете, и выходы вы получаете? Это помогает узнать, что не так, и как, с примерами. – ShadowRanger

+0

@ShadowRanger Done –

ответ

6

Ваша ошибка эта строка:

if x == word[word.index(x)]: 

который всегда верно, так как word[word.index(x)] это то же самое, как x. Попробуйте изменить его:

if x == word[guess.index(x)]: 
+0

'if guess.index (x) == word.index (x):' ​​также не удается по той же причине, что и вы, на мой ответ. Единственный правильный способ - это слово [guess.index (x)]. Я полагаю, что – Munir

+0

@munircontractor Вы правы, удалили его. Теперь наши ответы точно такие же :) – Selcuk

3

if x == word[word.index(x)]: должен быть if x == word[guess.index(x)]:

+0

Это не с повторяющимися символами. Например, если слово «мотор» и ваше предположение верно («мотор»), оно все равно вернет '['[m]', '[o]', '[t]', '(o)', '[r]'] ' – Selcuk

+0

Правый ... отредактированный. – Munir

Смежные вопросы