3

I need to test if the user input is the same as an element of a list, right now I'm doing this:

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

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

But I'm working with bigger lists and my if statement is growing a lot with all those checks, is there a way to reference multiple indexes something like:

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

or

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

Reading the lists docs I saw that it's impossible to reference more than one index like, I tried above and of course that sends a syntax error.

Mel
  • 5,837
  • 10
  • 37
  • 42
Guillermo Siliceo Trueba
  • 4,251
  • 5
  • 34
  • 47

4 Answers4

12

The simplest way is:

if guess in cars:
    ...

but if your list was huge, that would be slow. You should then store your list of cars in a set:

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

Checking whether something is present is a set is much quicker than checking whether it's in a list (but this only becomes an issue when you have many many items, and you're doing the check several times.)

(Edit: I'm assuming that the omission of cars[0] from the code in the question is an accident. If it isn't, then use cars[1:] instead of cars.)

RichieHindle
  • 272,464
  • 47
  • 358
  • 399
  • I think you misunderstood the question. In the first example his code would not print success if `guess` is `"red"`, but your code would. – sepp2k Oct 15 '10 at 17:43
  • 1
    Something to note here is that set construction, while efficient, may be a point of overhead if you're only checking the list once. – Daenyth Oct 15 '10 at 17:44
  • On the other hand, maybe I misunderstood and he simply made a mistake in his example code... – sepp2k Oct 15 '10 at 17:44
  • Thanks guys, yeah it was a mistake, but i'll keep that in mind, in, was what i needed :) – Guillermo Siliceo Trueba Oct 15 '10 at 17:59
4

Use guess in cars to test if guess is equal to an element in cars:

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

if guess in cars:
        print ("success!")
unutbu
  • 842,883
  • 184
  • 1,785
  • 1,677
3

Use in:

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

See also the possible operations on sequence type as documented in the official documentation.

poke
  • 369,085
  • 72
  • 557
  • 602
0

@Sean Hobbs: First you'd have to assign a value to the variable index.

index = 0

You might want to use while True to create the infinite loop, so your code would be like this:

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")
bdk
  • 1