Se esperan dos líneas en blanco pep8 de advertencia en python

Estoy usando el editor vim como IDE de python. A continuación se muestra un progtwig Python simple para calcular la raíz cuadrada de un número:

import cmath def sqrt(): try: num = int(input("Enter the number : ")) if num >= 0: main(num) else: complex(num) except: print("OOPS..!!Something went wrong, try again") sqrt() return def main(num): squareRoot = num**(1/2) print("The square Root of ", num, " is ", squareRoot) return def complex(num): ans = cmath.sqrt(num) print("The Square root if ", num, " is ", ans) return sqrt() 

Y las advertencias son:

 1-square-root.py|2 col 1 C| E302 expected 2 blank lines, found 0 [pep8] 1-square-root.py|15 col 1 C| E302 expected 2 blank lines, found 1 [pep8] 1-square-root.py|21 col 1 C| E302 expected 2 blank lines, found 0 [pep8] 

¿Puede por favor decir por qué vienen estas advertencias?

introduzca la descripción de la imagen aquí

 import cmath def sqrt(): try: num = int(input("Enter the number : ")) if num >= 0: main(num) else: complex_num(num) except: print("OOPS..!!Something went wrong, try again") sqrt() return def main(num): square_root = num**(1/2) print("The square Root of ", num, " is ", square_root) return def complex_num(num): ans = cmath.sqrt(num) print("The Square root if ", num, " is ", ans) return sqrt() 

Lo anterior solucionará tus problemas PEP8 . Después de su importación, debe tener 2 nuevas líneas antes de comenzar su código. Además, entre cada def foo() necesitas tener 2 también.

En su caso, tenía 0 después de la importación y tenía 1 nueva línea entre cada función. Parte de PEP8, debe tener una nueva línea después del final de su código. Desafortunadamente, no sé cómo mostrarlo cuando pegue su código aquí.

Preste atención a los nombres, también es parte de PEP8. Cambié de complex a complex_num para evitar la confusión con el complex integrado.

Al final, solo son una advertencia, se pueden ignorar si es necesario.

Aquí está el enlace a la documentación: PEP8 Style Guide for Python
Debe agregar dos espacios entre las funciones, como se muestra a continuación:

 import cmath def sqrt(): try: num = int(input("Enter the number : ")) if num >= 0: main(num) else: complex_num(num) except: print("OOPS..!!Something went wrong, try again") sqrt() return def main(num): square_root = num**(1/2) print("The square Root of ", num, " is ", square_root) return def complex_num(num): ans = cmath.sqrt(num) print("The Square root if ", num, " is ", ans) return sqrt() 

Necesitas dar dos líneas en blanco entre bloques de código significativos.

Estos incluyen (por ejemplo):

  • El bloque de importacion
  • Cada funcion
 with warnings:- import math def my(): print("hello world") my() Without warnings:- import math def my(): print("hello world") my() 

Aquí si ve el espacio de dos líneas después de la statement de importación para el segundo fragmento de código que no dará ninguna advertencia. Nuevamente, si está escribiendo la definición de dos métodos, tiene dos líneas de dos como espacio entre el bloque de código.

Todas las respuestas parecen ser correctas. Para evitar hacerlo manualmente, también puede usar el paquete autopep8 (pip install autopep8). El resultado de llamar a autopep8 filename.py es el mismo:

 import cmath def sqrt(): try: num = int(input("Enter the number : ")) if num >= 0: main(num) else: complex(num) except: print("OOPS..!!Something went wrong, try again") sqrt() return def main(num): squareRoot = num**(1/2) print("The square Root of ", num, " is ", squareRoot) return def complex(num): ans = cmath.sqrt(num) print("The Square root if ", num, " is ", ans) return sqrt() 

PS: eche un vistazo a if __name__ == "__main__":