Actualmente estoy aprendiendo Python y haciendo los ejercicios del módulo. Aprendí anteriormente cómo eliminar cualquier letra mayúscula en la cadena, por lo que será más fácil para el usuario usarla más adelante. Pero parece que cuando apliqué el método ' XXX.lower() ' a mi código, no funcionó. Funciona bien sin el método '.lower()' pero realmente quiero saber por qué no funciona. Aquí está mi código:
# bird names list bird_names = ("Parrot", "Owl", "Pigeon", "Crow", "Peacock", "Hen") # bird guess bird_guess = input("Enter a bird name (Guess 1): ") # nested conditions starts here if bird_guess.lower() in bird_names.lower(): print("Yes, 1st try!") else: bird_guess = input("Enter a bird name (Guess 2): ") if bird_guess.lower() in bird_names.lower(): print("Yes, 2nd try!") else: bird_guess = input("Enter a bird name (Guess 3): ") if bird_guess.lower() in bird_names.lower(): print("Yes, 3rd try!") else: print("Sorry, out of tries.")bird_names es una tupla, se supone que .lower() se llama en una cadena. Es posible que desee considerar algo como
bird_names = ("Parrot", "Owl", "Pigeon", "Crow", "Peacock", "Hen") bird_names = [name.lower() for name in bird_names]y luego puedes usar
if bird_guess.lower() in bird_names: ....Porque los nombres de pájaros son un objeto de tupla, no una cadena. Para que esto funcione, lo que puede hacer es actualizar o sobrescribir la tupla existente con una lista de comprensión o generar una nueva variable. En lugar de bird_names.lower() , puede usar la nueva lista o tupla en las condiciones.
bird_names_lower = [bird.lower() for bird in bird_names]bird_names es un objeto de lista.lower() es una función de cadenatal vez algo como esto te pueda ayudar:
if bird_guess.lower() in [word.lower() for word in bird_names]: