4

He creado este codigo para practicar los if anidados. En teoría debería arrojar como resultado que el número mayor pero no siempre se cumple. Adjunto coloco el código:

a=input("Digite un numero entero de dos digitos:")
b=input("Digite otro numero entero de dos digitos:")
c=input("Digite otro numero entero:")

if (a>b):
    if (a>c):
        print("El numero mayor es "+a)
elif (b>a):
    if (b>c):
        print("El numero mayor es "+b)
elif(c>a):
    if(c>b):
        print("El numero mayor es "+c)

Realizando una corrida con datos de prueba me muestra el siguiente resultado:

Digite un numero entero de dos digitos:50
Digite otro numero entero de dos digitos:25
Digite otro numero entero:100
El numero mayor es 50

Process finished with exit code 0

Me gustaría saber por qué no muestra como número mayor el 100 si estoy tomando todos los condicionales en cuenta.

Gracias por la colaboración que puedan prestar.

Art_Code
  • 2,415
  • 2
  • 8
  • 23
Barly Espinal
  • 325
  • 4
  • 14
  • 3
    a, b, y c son cadenas (pues eso es lo que retorna input). Debes convertirlas a int. Lo que hace tu programa es compararlas alfabeticamente. Por otro lado el código no es correcto, pues hay casos en los que no imprimiría nada (p.ej. si a>b pero a – abulafia May 26 '18 at 07:22
  • 1
    Para aclarar una posible fuente de confusión, si estas siguiendo un tutorial o curso (como comentas en tu pregunta anterior) y ves que `a=input("Digite ...)` retorna enteros sin problemas y a ti no es porque está usando Python 2 y tú Python 3. Sea como sea [es una muy mala práctica usar `input` en Python 2 para esto](https://es.stackoverflow.com/questions/38288/duda-con-raw-input/38293), se debe obtener la cadena y luego hacer el casting a int como comenta abulafia, usar `a = int(raw_input("Digite..."))` en Python 2 y `a = int(input("Digite..."))` en Python 3. – FJSevilla May 26 '18 at 08:07
  • 2
    Hola Barly Espinal, por favor lee [ask] y edita tu pregunta siguiendo los consejos y recomendaciones que encontrarás allí. Es importante usar títulos descriptivos en lugar de mensajes como “ayuda!” O “otro problemita” – Alvaro Montoro May 26 '18 at 13:27
  • muchas gracias por todas las sugerencias. Me leere bien como preguntar y chekar bien como configuarlo todo para usar python 3, por si hay algo k no esta cuadrando en el programa k uso para digitar el codigo. Muchas gracias nuevamente – Barly Espinal May 26 '18 at 16:34

1 Answers1

4

Por favor toma en cuenta todos los comentarios que han realizado a tu pregunta ya que todos ellos son valiosos para tu proceso de aprendizaje. En vista de que estás aprendiendo traté de reutilizar tu código y modificarlo lo menos posible porque hay otras formas más avanzadas que requieren menor código para lograr tu propósito, sin embargo, funciona bastante bien el dicho que reza: "primero hay que aprender a gatear para luego poder caminar"

2 observaciones importantes para tu código. La primera como bien te comentó @abulafia y @FJSevilla es que estás comparando cadenas y no números. Recuerda que cuando utilizas ese método de captura de datos el guarda siempre en string o cadena. Es por ello que cuando comparas a con b y c no te arroja el número mayor sino cual de los tres prevalece alfabéticamente. Lo segundo es que tengas cuidado con el uso de los if y elif de la forma en que estableces la comparación no hay necesidad de utilizar elif.

A continuación dejo tu código con las correccciones que te hemos mencionado de la forma más didáctica que encontré para que observes claramente la conversión de tipos y así funcione como deseas:

a=input("Digite un numero entero de dos digitos:")
b=input("Digite otro numero entero de dos digitos:")
c=input("Digite otro numero entero:")

a=int(a);
b=int(b);
c=int(c);

if (a>b):
    if (a>c):
        print("El numero mayor es "+str(a))
if (b>a):
    if (b>c):
        print("El numero mayor es "+str(b))
if(c>a):
    if(c>b):
        print("El numero mayor es "+str(c))

Espero sea de ayuda. Un saludo!

Art_Code
  • 2,415
  • 2
  • 8
  • 23
  • 1
    Puedes ahorrarte la conversión a `str()` de los datos a imprimir, si cambias el `+` por una coma en los `print()`. – abulafia May 26 '18 at 20:33
  • @abulafia Toda la razón abulafia. Pasa que lo coloqué así porque es lo más didáctico dado que el OP comenta que está empezando con Python. Me pareció que es la forma mas sencilla de que él observe donde hay conversión de tipos – Art_Code Jun 08 '18 at 13:05