Подтвердить что ты не робот

Ожидаемые две пустые строки pep8 предупреждение в python

Я использую редактор vim в качестве Python IDE. Ниже приведена простая программа на Python для вычисления квадратного корня числа:

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()

И предупреждения:

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]

Можете ли вы сказать, почему эти предупреждения приходят?

enter image description here

4b9b3361

Ответ 1

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()

Предыдущие исправят проблемы PEP8. После вашего импорта вам нужно иметь 2 новые строки перед началом кода. Кроме того, между каждым def foo() вам также должно быть 2.

В вашем случае у вас было 0 после импорта, и у вас была 1 новая линия между каждой функцией. Часть PEP8 вам нужно иметь новую строку после окончания вашего кода. К сожалению, я не знаю, как это показать, когда я вставляю код здесь.

Обратите внимание на именование, это часть PEP8. Я изменил complex на complex_num, чтобы предотвратить путаницу со встроенным complex.

В конце концов, они только предупреждают, их можно игнорировать при необходимости.

Ответ 2

Вам нужно дать две пустые строки между значимыми блоками кода.

К ним относятся (например):

  • Блок импорта
  • Каждая функция

Ответ 3

Вот ссылка на документацию: Руководство по стилю PEP8 для Python
Вы должны добавить два пробела между функциями, как показано ниже:

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()

Ответ 4

with warnings:-  
import math  
def my():  
    print("hello world")  
my()

Without warnings:-  
import math 


def my():  
    print("hello world")  
my()

Здесь, если вы видите пробел двух строк после оператора импорта для второго фрагмента кода, который не даст никаких предупреждений. Опять же, если вы пишете два определения методов, у вас есть два, укажите две строки как пробел между вашим блоком кода.

Ответ 5

Все ответы кажутся правильными. Чтобы избежать этого вручную, вы также можете использовать пакет autopep8 (pip install autopep8). Результат вызова autopep8 filename.py такой же:

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: посмотрите, if __name__ == "__main__":