在python中针对列表测试用户输入

时间:2010-10-15 17:39:24

标签: python

我需要测试用户输入是否与列表元素相同,现在我正在这样做:

cars = ("red", "yellow", "blue")
guess = str(input())

if guess == cars[1] or guess == cars[2]:
        print("success!")

但是我正在处理更大的列表,而且我的if语句在所有这些检查中都有很大的增长,有没有办法引用多个索引,如:

if guess == cars[1] or cars[2]

if guess == cars[1,2,3]

阅读列表文档我发现不可能引用多个索引,比如我在上面尝试过,当然会发送语法错误。

4 个答案:

答案 0 :(得分:9)

最简单的方法是:

if guess in cars:
    ...

但是如果你的名单很大,那就太慢了。然后,您应该将您的汽车列表存储在一个集合中:

cars_set = set(cars)
....
if guess in cars_set:
    ...

检查某些东西是否存在是一个集合比检查它是否在列表中要快得多(但这只会在你有很多项目时出现问题,而且你正在多次进行检查。)

(编辑:我假设问题代码中遗漏cars[0]是偶然的。如果不是,请使用cars[1:]代替cars。 )

答案 1 :(得分:2)

使用guess in cars来测试guess是否等于cars中的元素:

cars = ("red","yellow","blue")
guess = str(input())

if guess in cars:
        print ("success!")

答案 2 :(得分:2)

使用in

if guess in cars:
    print( 'success!' )

另见文件in the official documentation对序列类型的可能操作。

答案 3 :(得分:0)

@Sean Hobbs: 首先,您必须为变量索引分配一个值。

index = 0

您可能希望使用while来创建无限循环,因此您的代码将如下所示:

while True:

    champ = input("Guess a champion: ")
    champ = str(champ)

    found_champ = False
    for i in listC:
        if champ == i:
            found_champ = True

    if found_champ:
        print("Correct")
    else:
        print("Incorrect")