Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对照字符串列表检查原始输入?_Python_Python 2.7 - Fatal编程技术网

Python 如何对照字符串列表检查原始输入?

Python 如何对照字符串列表检查原始输入?,python,python-2.7,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个

以下是我目前的情况:

def checkPlayerCardInput(answer):
    while True:
        for x in range(len(player1Cards)):
            if answer.lower() == player1Cards[x]:
                return player1[x]
我不知道的是,如果用户拼错了一个单词或输入了完全不正确的内容,如何重复循环

在这种情况下,
player1Cards
等于5个字符串的列表。我只是尝试将
答案
(用户之前通过
原始输入
)与其中一个字符串匹配,然后
返回该答案(在本例中,该答案是
播放器1
列表中的项,其中包含返回的“卡”的其余数据)


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

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

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

使用
while
循环不断请求
原始输入
,直到在列表中找到字符串。

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

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

使用
while
循环不断请求
原始输入
,直到在列表中找到一个字符串。

这是否符合您的要求

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

这是你想要的吗

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

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

但是,您可以在
列表的
关键字中使用

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

if answer.lower() not in player1Cards:
    # Typo, or the user inputed a non-existing card

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

但是,您可以在
列表的
关键字中使用

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

if answer.lower() not in player1Cards:
    # Typo, or the user inputed a non-existing card

对事实上,这很有效。我没有意识到我可以重新分配
answer
变量,而不会在循环中导致错误。我会在期限届满时接受这个。是的。事实上,这很有效。我没有意识到我可以重新分配
answer
变量,而不会在循环中导致错误。当时间限制到期时,我会接受这一点。为什么有两种不同的数据结构,
player1
player1Cards
?如果你解释一下你想做什么,我们可能会在数据结构方面帮助你。Player1包含“手”中每张牌的列表。player1Cards是一个字符串列表,与每手牌的“名称”相匹配。我现在意识到我的列表结构还不是很好,但我一直在使用这个程序作为练习,从简单的在线教程到实际制作一些有用的东西。为什么有两种不同的数据结构,
player1
player1Cards
?如果你解释一下你想做什么,我们可能会在数据结构方面帮助你。Player1包含“手”中每张牌的列表。player1Cards是一个字符串列表,与每手牌的“名称”相匹配。我现在意识到我的列表结构还不是很好,但我一直在使用这个程序作为练习,从简单的在线教程到实际制作一些有用的东西。