Te recomendamos que pruebes esta respuesta en un ambiente controlado antes de enviarlo a producción, saludos.
Solución:
Las expresiones booleanas en la mayoría de los lenguajes de programación no siguen las mismas reglas gramaticales que el inglés. Tienes que hacer comparaciones separadas con cada stringy conectarlos con or
:
if x == "monkey" or x == "monkeys":
print "You're right, they are awesome!!"
else:
print "I'm sorry, you're incorrect.", x[0].upper() + x[1:], "is not the right animal."
No necesita hacer la prueba para el caso incorrecto, solo use else
. Pero si lo hicieras, sería:
elif x != "monkey" and x != "monkeys"
¿Recuerdas haber aprendido sobre las Leyes de deMorgan en la clase de lógica? Explican cómo invertir una conjunción o disyunción.
gkayling es correcto. Vuelve tu primera instrucción if true si:
x == “mono”
o
“monos” se evalúa como true (lo hace ya que no es un null string).
Cuando desee probar si x es uno de varios valores, es conveniente utilizar el operador “en”:
test = raw_input("It's the flying circus! Cool animals but which is the best?")
x = test.lower()
if x in ["monkey","monkeys"]:
print "You're right, they are awesome!!"
else:
print "I'm sorry, you're incorrect.", x[0].upper() + x[1:], "is not the right
Debiera ser
if x == "monkey" or x == "monkeys":
Puntuaciones y comentarios
Si te ha sido de utilidad este post, sería de mucha ayuda si lo compartieras con más juniors y nos ayudes a extender nuestro contenido.