如何根据字符串列表检查raw_input?

时间:2013-05-28 16:01:59

标签: python python-2.7

这就是我现在所拥有的:

def checkPlayerCardInput(answer):
    while True:
        for x in range(len(player1Cards)):
            if answer.lower() == player1Cards[x]:
                return player1[x]

我不知道的是,如果用户拼错单词或完全输入不正确的内容,如何重复循环?

在这种情况下,player1Cards等于5个字符串的列表。我只是尝试将answer(之前由用户通过raw_input输入)与其中一个字符串和return回答(在这种情况下,是来自player1列表的项目,其中包含返回的“卡片”的其余数据。

如果答案不正确,我希望循环从用户的新raw_input答案开始。

3 个答案:

答案 0 :(得分:4)

要检查项目是否包含在列表中,请使用in运算符。像这样:

if answer.lower() in player1CArds:
    #...

使用while循环继续询问raw_input,直到您在列表中找到字符串为止。

答案 1 :(得分:0)

这样做你想要的吗?

def checkPlayerCardInput(answer):
    while True:
        for x in range(len(player1Cards)):
            if answer.lower() == player1Cards[x]:
                return player1[x]
        answer = raw_input('incorrect answer!')

答案 2 :(得分:0)

else关键字可用于您的情况。与for结合使用时,在范围用尽而不退出循环(中断或返回)时执行else子句:

for x in range(len(player1Cards)):
        if answer.lower() == player1Cards[x]:
            return player1[x]
else:
    # Here, your user input matches nothing.

但是,您可以使用in的{​​{1}}关键字:

list

或相反,if answer.lower() in player1Cards: # equivalent to your for loop

not in