如何修复“ ZeroDivisionError:浮点数被零除”

时间:2019-01-12 22:41:12

标签: python python-3.x

我有calcularBeta1方法。运行程序时,出现此错误:

  

ZeroDivisionError:浮点数被零除

 resultadoB1 = (sumaXY - ((sumaX * sumaY ) / totalElementos )) / (sumaXCuadrada - math.pow(sumaX, 2) / totalElementos)

方法calcularBeta1

def calcularBeta1(self, lista):
    actual = lista.nodoInicio
    sumaXY = 0
    sumaX = 0
    sumaY = 0
    sumaXCuadrada = 0
    totalElementos = 0
    while actual != None:
        dato1 = actual.dato1
        dato2 = actual.dato2
        sumaXY += dato1 * dato2
        sumaX += dato1
        sumaY += dato2
        sumaXCuadrada += math.pow(dato1, 2)
        totalElementos += 1
        actual = actual.siguienteNodo

    resultadoB1 = (sumaXY - ((sumaX * sumaY ) / totalElementos )) / (sumaXCuadrada - math.pow(sumaX, 2) / totalElementos)
    return resultadoB1

LecturaArchivo类

class LecturaArchivo:
   datosArchivo = ListaEnlazada()
   operaciones = Operaciones()
   xTemporal = 0
   yTemporal = 0


   nombreArchivo = input('Nombre del archivo: ')
   archivo = open(nombreArchivo, "r")
   lineas = archivo.read()
   datos = lineas.split(',')
   datoProxy = float(input('Proxy: '))

   while lineas:
      lineas = archivo.readlines()
      xTemporal = datos[0]
      yTemporal = datos[1]

      datosArchivo.agregarNodoFinal(float(xTemporal), float(yTemporal))
  print(datos)

  sumaElementos = sum(datosArchivo.obtenerNodos())
  mediaElementos = operaciones.media(sumaElementos, datosArchivo.tamano())
  beta1 = operaciones.calcularBeta1(datosArchivo)
  print('Beta1: ', beta1)
  beta0 = operaciones.calcularBeta0(beta1, media)
  print('Beta0: ', beta0)
  yk = operaciones.calcularYK(beta0, beta1, datoProxy)
  print('Regresión Líneal: ', yk)

3 个答案:

答案 0 :(得分:1)

Python无法将数字除以0。如果您尝试除以0,则python将抛出ZeroDivisionError,这是发生在您身上的事情。解决该问题的最佳方法是不除以零。您可以使用if语句来确保值不为零。

答案 1 :(得分:1)

不要被零除。

它在表达中抱怨

resultadoB1 = (sumaXY - ((sumaX * sumaY ) / totalElementos )) / (sumaXCuadrada - math.pow(sumaX, 2) / totalElementos)

它将是totalElementossumaXCuadrada - math.pow(sumaX, 2)的结果为零。

在计算该公式之前,您需要添加代码来处理这些情况。

答案 2 :(得分:0)

ZeroDivisionError发生在您尝试将数字除以0(众所周知,这在数学上是不可能的)时,只需更改股息的值即可。