Python声称我的列表没有我想要的字符

时间:2016-11-17 12:14:58

标签: python string list debugging

我正在尝试制作一个刽子手游戏。我一次做的很少,因为我还在搞清楚很多事情。

这个问题真的让我陷入困境。我试图在我的猜测列表中打印一个字符"猜测"只要我与之比较的角色在列表中。

但出于某种原因,它似乎认为角色不在列表中。即使我硬编码它仍然无法正常工作。

def win(guesses):
    if guesses == lst:
        return True
    else:
        return False


def check(guess):
    fail = 0
    #char = str(guess)
    for char in lst:
        if char in guess:
            guesses.append(guess)
            return True
        else:
            fail = fail + 1
            if fail == len(lst):
                return False
#Start up!
word = "jamie"
lst = []
Guess = ''
guesses = []
for c in word:
    lst.append(c)
for char in word:
    print '_',
# Lets play!
won = False
while won == False:
    Guess = raw_input("\nGuess a letter: "),
    while Guess in guesses:
        Guess = raw_input("\nPlease choose a letter not already used: "),
    ans = check(Guess)
    if ans == True:
        for c in lst:
            if c in guesses:
                print c,
            else:
                print "_",
    won = win(guesses)
else:
    print "Great job you won!"
    print guesses

P.S
如果难以阅读,我很抱歉,但如果有任何提示或更明智的方法来改进我的代码,我很高兴听到它们。

1 个答案:

答案 0 :(得分:10)

由于单个字符,您会收到意外结果:

Guess = raw_input("\nGuess a letter: "),
                                       ^

添加这样的逗号会产生一个元组,其中包含您感兴趣的字符串的单个元素。

>>> x = 1
>>> x
1
>>> type(x)
<class 'int'>
>>> x = 1,
>>> x
(1,)
>>> type(x)
<class 'tuple'>

请勿在{{1​​}}电话后添加逗号。它与raw_input语句的工作方式不同。