0

我有这个代码:

def Gradiente(grado):
   suma = 0
   for i in range(porcent):
       x1 = entrenamiento[i][0]
       x2 = entrenamiento[i][1]
       y = entrenamiento[i][2]
       h = 1 / (1 + math.exp(-(t0 + t1 * x1 + x2))

       if (grado == 1):
           suma = suma + (h - y)
       elif(grado == 2):
           suma = suma + (h - y) * x1 

   return suma / porcent

在 if 处,它一直说无效的语法(在“:”处),是不是错了?

4

2 回答 2

3

人们在使用 Python 时遇到的所有问题中有 97.2% 涉及不正确的缩进 :-) 在您最初的问题中,您的缩进不正确,您需要正确缩进:

def Gradiente(grado):
    suma = 0
    for i in range(porcent):
        x1 = entrenamiento[i][0]
        x2 = entrenamiento[i][1]
        y = entrenamiento[i][2]
        h = 1 / (1 + math.exp(-(t0 + t1 * x1 + x2)))  # <-- fix

        if grado == 1:                                # <-- style
            suma = suma + (h - y)
        elif grado == 2:                              # <-- style
            suma = suma + (h - y) * x1 

    return suma / porcent

但是,您已经明确表示在输入问题时这是您的错字,在这种情况下,它只是那个大型数学公式上缺少的右括号(这也在我上面的代码中修复)。

所做的另一项更改是从if语句中删除了多余的标点符号。使用它们的人往往来自必要的 C(或类似语言)背景。在 Python 中使用它们通常只会使代码不必要地混乱。

于 2013-11-13T06:26:43.513 回答
1

在第 1 行之后将所有内容缩进一个制表符。缩进在 Python 中很重要。

于 2013-11-13T06:24:38.553 回答