1 votos

Calculadora de campos Error de análisis sintáctico SyntaxError: sintaxis no válida (línea 2)

Estoy escribiendo un condicional en la Calculadora de Campos y me está dando un error de sintaxis en la línea 2. ¿Alguien puede verlo?

El bloque de código es éste:

def ZFactor(LAT_CENTR) :
  if (10.000 < math.fabs(LAT_CENTR) and math.fabs(LAT_CENTR) => 00.000) :
    return 0.00000898
  elif (math.fabs(LAT_CENTR) => 10.000 and math.fabs(LAT_CENTR) < 20.000):
    return 0.00000912
  elif (math.fabs(LAT_CENTR) => 20.000 and math.fabs(LAT_CENTR) < 30.000):
   return 0.00000956
  elif (math.fabs(LAT_CENTR) => 30.000 and math.fabs(LAT_CENTR) < 40.000):
     return 0.00001036
  elif (math.fabs(LAT_CENTR) => 40.000 and math.fabs(LAT_CENTR) < 50.000):
    return 0.00001171
  elif (math.fabs(LAT_CENTR) => 50.000 and math.fabs(LAT_CENTR) < 60.000):
    return 0.00001395
  elif (math.fabs(LAT_CENTR) => 60.000 and math.fabs(LAT_CENTR) < 70.000):
    return 0.00001792
  elif (math.fabs(LAT_CENTR) => 70.000 and math.fabs(LAT_CENTR) < 80.000):
    return 0.00002619
  elif (math.fabs(LAT_CENTR) => 80.000 and math.fabs(LAT_CENTR) <= 90.000):
    return 0.00005156
  else:
    return 1

enter image description here

2voto

x3ja Puntos 169

La siguiente función debería proporcionar resultados equivalentes:

def ZFactor(LAT_CENTR):
    x = math.fabs(LAT_CENTR)
    if x < 10.0:
        return 0.00000898
    elif x < 20.0:
        return 0.00000912
    elif x < 30.0:
        return 0.00000956
    elif x < 40.0:
        return 0.00001036
    elif x < 50.0:
        return 0.00001171
    elif x < 60.0:
        return 0.00001395
    elif x < 70.0:
        return 0.00001792
    elif x < 80.0:
        return 0.00002619
    elif x <= 90.0:
        return 0.00005156
    else:
        return 1

math.fabs(LAT_CENTR) se desplaza fuera de la sentencia if para eliminar cálculos redundantes del mismo valor. Dependiendo de la distribución de ese valor, una media de 10 cálculos por llamada a función. Como el límite inferior de cada elif ya se ha comprobado en la prueba anterior, no es necesario comprobarlo en la siguiente.

Estoy adivinando lo que intentabas hacer en la sentencia if inicial; tal y como está escrito es lógicamente imposible, o siempre falso. Un valor absoluto siempre será mayor que cero, por lo que tampoco es necesaria una prueba compuesta.

1voto

Gavin Schulz Puntos 592

El error de sintaxis se deberá a su mayor o igual que que se escriben de atrás hacia delante. Debe ser >= pas => . También creo que quieres probar que 10 es superior a y no menos de aquí.

if (10.000 > math.fabs(LAT_CENTR) and math.fabs(LAT_CENTR) >= 00.000) :

Ocasionalmente a python no le gusta manejar if: return, elif: return, elif: return etc., así que me gusta poner un único return al final. Además, como math.fabs() devuelve un valor absoluto por lo que no es necesario comprobar que el valor no es negativo.

def ZFactor(LAT_CENTR):
    x = math.fabs(LAT_CENTR)
    y = 1
    if (x < 10):
        y = 0.00000898
    elif (x < 20.000):
        y = 0.00000912
    elif (x < 30.000):
       y = 0.00000956
    elif (x < 40.000):
         y = 0.00001036
    elif (x < 50.000):
        y = 0.00001171
    elif (x < 60.000):
        y = 0.00001395
    elif (x < 70.000):
        y = 0.00001792
    elif (x < 80.000):
        y = 0.00002619
    elif (x <= 90.000):
        y = 0.00005156
    return y

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X