Probando la entrada del usuario contra una lista en Python

Necesito probar si la entrada del usuario es lo mismo que un elemento de una lista, ahora mismo estoy haciendo esto:

cars = ("red", "yellow", "blue") guess = str(input()) if guess == cars[1] or guess == cars[2]: print("success!") 

Pero estoy trabajando con listas más grandes y mi statement if está creciendo mucho con todas esas comprobaciones, ¿hay alguna forma de hacer referencia a múltiples índices de alguna manera como:

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

o

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

Al leer los documentos de las listas, vi que es imposible hacer referencia a más de un índice, lo intenté anteriormente y, por supuesto, eso envía un error de syntax.

La forma más sencilla es:

 if guess in cars: ... 

pero si tu lista fuera enorme, sería lento. A continuación, debe almacenar su lista de coches en un conjunto:

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

Comprobar si algo está presente es un conjunto es mucho más rápido que verificar si está en una lista (pero esto solo se convierte en un problema cuando tienes muchos elementos y estás haciendo la verificación varias veces).

(Editar: supongo que la omisión de los cars[0] en el código de la pregunta es un accidente. Si no lo es, entonces use cars[1:] lugar de cars ).

Usa la guess in cars para probar si la guess es igual a un elemento en los cars :

 cars = ("red","yellow","blue") guess = str(input()) if guess in cars: print ("success!") 

Utilizar in :

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

Vea también las posibles operaciones en el tipo de secuencia como se documenta en la documentación oficial .

@Sean Hobbs: primero tendría que asignar un valor al índice de variable.

 index = 0 

Es posible que desee utilizar la opción Verdadero para crear el bucle infinito, por lo que su código sería así:

 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")