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 división entre cero: división entera o módulo por cero en Python.

Estaba escribiendo un programa para encontrar el mayor común divisor, pero recibí un error:

h = 0
def GCD(num1, num2):
    if num1 == num2:
        return num1, num2
    elif num1 < num2:
        h = num1
        num1 = num2
        num2 = h
        while num1 % num2 != 0:
            num1 = num2
            num2 = num1 % num2
        return num2
print (GCD(12, 18))

Y aquí está el error que recibí:

ZeroDivisionError: integer division or modulo by zero

En esta línea:

while num1 % num2 != 0:

El error completo es:

Traceback (most recent call last):
  File "c:\Users\Lenovo\projects\*****.py", line 13, in <module>
    print (GCD(12,18))
  File "c:\Users\Lenovo\projects\*****.py", line 9, in GCD
    while num1 % num2 != 0:
ZeroDivisionError: integer division or modulo by zero

Agradezco cualquier ayuda.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el programa intentó realizar una división por cero o una operación de módulo por cero, lo cual no es una operación matemática válida. Esto ocurrió en la línea while num1 % num2 != 0: donde el valor de num2 es cero.

    Para corregir este error, necesitamos verificar si num2 es igual a cero antes de intentar realizar el cálculo num1 % num2. Si num2 es cero, podemos devolver num1 como el máximo común divisor ya que cualquier número n es un divisor de cero.

    Aquí está el código corregido:

    h = 0
    def GCD(num1, num2):
        if num1 == num2:
            return num1, num2
        elif num1 < num2:
            h = num1
            num1 = num2
            num2 = h
    
        if num2 == 0:
            return num1
    
        while num1 % num2 != 0:
            num1 = num2
            num2 = num1 % num2
        return num2
    
    print(GCD(12, 18)) # Salida: 6
    

    En este código corregido, agregamos una declaración if adicional para verificar si num2 es igual a cero. Si es así, devolvemos num1 en lugar de realizar una operación inválida.

Comments are closed.