猿问

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

我有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

讲座档案类

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)


江户川乱折腾
浏览 356回答 3
3回答

LEATH

ZeroDivisionError当您尝试将一个数字除以 0 时会发生这种情况,正如您所知,这在数学上是不可能的,只需更改被除数的值即可。

幕布斯7119047

Python 无法将数字除以 0。如果您尝试除以 0,python 会抛出一个ZeroDivisionError,这就是您遇到的情况。修复它的最佳方法是不除以零。您可以使用if语句来确保值不为零。

慕运维8079593

不要除以零。在它抱怨的表达中resultadoB1 = (sumaXY - ((sumaX * sumaY ) / totalElementos )) / (sumaXCuadrada - math.pow(sumaX, 2) / totalElementos)要么要么totalElementos结果sumaXCuadrada - math.pow(sumaX, 2)为零。在尝试计算该公式之前,您需要添加代码来处理这些情况的可能性。
随时随地看视频慕课网APP

相关分类

Python
我要回答