检查列表中的两个项目是否相同?

问题描述:

我的目标:检查列表中的两个项目是否相同?

在一个Lingo游戏中,有一个隐藏的单词,长度为5个字符。游戏的目的是通过猜测找到这个单词,并且返回 接收两种线索: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() 

截至,如果这些词共用一个普通的字母,它将该字母放在方括号中,不管它是否共享相同的pos。

实例:

正确: - 字:Table - 我的猜测:Cater - OUTPUT:C[a](t)(e)r

正确: - 字:Japan - 我的猜测:Ajpan(注意之间的开关a和j,我故意这样做)。 - OUTPUT:[A][j][p][a][n](应该是(a)(j)[p][a][n]

+0

那么您能不能给我们一些样品输入,您所期望的输出,你得到的产出?这有助于了解什么是错的,以及如何用例子。 – ShadowRanger

+0

@ShadowRanger完成 –

你的错误是这样一行:

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

这始终是真实的,因为word[word.index(x)]是一回事x。尝试将其更改为:

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

'如果guess.index(x)== word.index(x):'也因为你放在我的答案中的原因而失败。唯一正确的方法是'word [guess.index(x)]'我想 – Munir

+0

@munircontractor你是对的,删除它。现在我们的答案完全一样:) – Selcuk

if x == word[word.index(x)]:应该if x == word[guess.index(x)]:

+0

这将失败,重复的字符。例如,如果单词是'motor'并且您的猜测是正确的('motor'),它仍然会返回'['[m]','[o]','[t]','(o)', '[r]']' – Selcuk

+0

正确...已编辑。 – Munir