0

这是我目前所拥有的:

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 答案开始。

4

3 回答 3

4

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

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

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

于 2013-05-28T16:05:46.410 回答
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关键字 of list

if answer.lower() in player1Cards:
    # equivalent to your for loop

或相反,not in

if answer.lower() not in player1Cards:
    # Typo, or the user inputed a non-existing card
于 2013-05-28T16:10:07.070 回答
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!')
于 2013-05-28T16:05:58.193 回答