2

Captura de pantalla del programa Este es un programa que hice siguiendo un tutorial, pero al probarlo me da una salida inesperada, ¿Cuál podría ser el error?

Éste es el texto:

x = input('Give me a first number: ')
y = input('Give me a second number: ')
z = input('Give me a third number: ')

print('')

if x < y and x < z:
    print(x, ' is least')
elif y < z:
    print(y, ' is least')
else:
    print(z, ' is least')
Luis
  • 78
  • 7
  • Hola Luis, Bienvenido a SOes , sería genial que el código se añadiera en formato texto y no en imágenes. – Dev. Joel Sep 29 '17 at 03:51
  • Ya puse el código en texto, haciendo pruebas veo que el programa funciona correctamente cuando los números son de un mismo tamaño de dígitos (Ej. 9,5,3) pero no cuando son de diferente tamaño (10,5,3) – Luis Sep 29 '17 at 03:59
  • 1
    El error es por lo que comenta Dev. Joel, `"150">"5"` es evaluado como false porque el carácter del segundo string (`"5")`es mayor que `"1"`. Luis, no si si en el tutorial se usa `input` así, si es así y te preguntas porqué no funciona en tu caso comentarte que en el tutorial usan Python 2 seguramente y tu Python 3. De todas formas, usar `input` asi en Python 2 es peligroso y mala practica, mirate [Duda con raw_input](https://es.stackoverflow.com/q/38288/15089) donde se explican las diferencias entre Python 2 y 3 al respecto. Un saludo. – FJSevilla Sep 29 '17 at 10:55

1 Answers1

2

Al parecer es un error típico al momento de comparar porque en realidad está comparando string es lo que retorna el input , para solucionar podría hacer el cast a un valor numérico como int.

x = int(input('Give me a first number: '))
y = int(input('Give me a second number: '))
z = int(input('Give me a third number: '))
Dev. Joel
  • 23,229
  • 3
  • 25
  • 44