es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de valor

El problema que estoy tratando de resolver parece simple: tomar 2 entradas enteras, user_num y div_num, y dividirlas y luego capturar las excepciones usando bloques try/except. El lenguaje es Python.

Para la división entre cero, muestra esto: “Zero Division Exception: integer division or modulo by zero”

Asumiendo una entrada de user_num=15.5 y div_num=5, para ValueError, muestra esto: “Input Exception: invalid literal for int() with base 10: ‘15.5’”

El problema también nos proporciona esto: Nota: ZeroDivisionError se produce cuando se produce una división entre cero. ValueError se produce cuando un usuario introduce un valor de tipo de datos diferente al que está definido en el programa. No incluyas código para lanzar ninguna excepción en el programa.

El cálculo y la división entre cero funcionan como se espera, pero mi excepción ValueError no funciona. Entiendo el error (definí un entero pero le di un flotante), pero no sé cómo hacer que el programa haga lo que necesito. Esto es lo que tengo:

user_num=int(input())
div_num=int(input())

try:
    print(int(user_num/div_num))
except ZeroDivisionError:
    print("Zero Division Exception: integer division or modulo by zero")
except ValueError:
    print("Input Exception: invalid literal for int() with base 10:", user_num)

El error que obtengo es:

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    user_num=int(input())
ValueError: invalid literal for int() with base 10: '15.5'

Agradecería cualquier ayuda para que la excepción ValueError funcione.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para solucionar la excepción ValueError, también puedes envolver las declaraciones int(input()) en bloques try/except. De esta manera, si el usuario ingresa un valor no entero, este será capturado y se imprimirá el mensaje de excepción correspondiente. Aquí está el código actualizado:

    try:
    user_num = int(input())
    except ValueError:
    print(“Excepción de entrada: literal inválido para int() con base 10:”, user_num)

    try:
    div_num = int(input())
    except ValueError:
    print(“Excepción de entrada: literal inválido para int() con base 10:”, div_num)

    try:
    print(int(user_num / div_num))
    except ZeroDivisionError:
    print(“Excepción de división por cero: división entera o módulo por cero”)

    Ahora, si el usuario ingresa un valor no entero, el programa capturará la excepción e imprimirá el mensaje de error correspondiente.

Comments are closed.