我的列表索引不起作用

时间:2016-05-25 08:54:50

标签: python list python-3.x conditional python-3.4

我制作的代码会检查输入的答案,看它是否包含列表中的关键字。

我目前的代码是:

list = ["cool", "yes", "positive", "yeah", "maybe", "possibly"]
a = input ("Input a keyword:")
for item in list:
    if item in a:
        if item in list[0:3]:
            print ("you inputted cool or yes or positive")
        else:
            print ("You inputted yeah or maybe or possibly")

我遇到问题if item in list[0:3]:。如果输入索引为0(酷)的第一个关键字,但是如果输入yes或positive,则该程序无效。

为什么这样做?我知道我做错了什么但我在python中没有与列表和元组的交互,因此我对它们了解不多。

感谢。

2 个答案:

答案 0 :(得分:0)

虽然您的代码正常运行,但您可以使用elif语句检查原始关键字列表的[3:],例如:

k = ["cool", "yes", "positive", "yeah", "maybe", "possibly"]
m = input ("Input a keyword:")
for i in k:
    if i in m:
        if i in k[:3]:
            print ("you inputted cool or yes or positive")
        elif i in k[3:]:
            print ("You inputted yeah or maybe or possibly")
        else:
            print ("You inputted a word not in the keyword list")

这使您可以使用第三个print()语句捕获输入关键字中没有任何关键字的情况。

您当然可以通过拆分输入消息来反转您的比较逻辑。分割输入消息,因为您无法控制第一个位置输入的单词数,如下所示:

k = ["cool", "yes", "positive", "yeah", "maybe", "possibly"]
m = input ("Input a keyword:")

for i in m.split():
    if i in k[:3]:
        print ("you inputted cool or yes or positive")
    elif i in k[3:]:
        print ("You inputted yeah or maybe or possibly")
    else:
        print ("You inputted a word not in the keyword list") 

如果关键字列表大于平均输入消息,则最后一个示例可能更经济,因为它只需要迭代输入消息中的字数。如果输入消息有两个单词,这两个单词都在关键字列表中,这也会被接收。

我对您的其他问题here: How to use lists in conditionals

给出了类似的答案

HTH

答案 1 :(得分:-2)

尝试使用raw_input()。 我希望它会对你有所帮助..

a = raw_input(“输入关键字:”)