it-swarm.com.de

erwartete zwei leere Zeilen pep8 Warnung in Python

Ich verwende vim Editor als Python-IDE. Nachfolgend finden Sie ein einfaches Python-Programm zur Berechnung der Quadratwurzel einer Zahl:

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

Und die Warnungen sind:

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]

Können Sie bitte sagen, warum diese Warnungen kommen?

 enter image description here

19
Amit Upadhyay
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()

Der vorherige behebt Ihre PEP8 Probleme. Nach dem Import müssen Sie zwei neue Zeilen erstellen, bevor Sie den Code starten. Zwischen jeder def foo() müssen Sie auch 2 haben.

In Ihrem Fall hatten Sie nach dem Import eine 0 und zwischen jeder Funktion 1 Newline. Für einen Teil von PEP8 benötigen Sie nach dem Ende Ihres Codes eine neue Zeile. Leider weiß ich nicht, wie ich es zeigen soll, wenn ich Ihren Code hier einfüge.

Achten Sie auf die Benennung, sie ist auch Teil von PEP8. Ich habe complex in complex_num geändert, um Verwechslungen mit eingebauten complex zu vermeiden.

Am Ende sind sie nur eine Warnung, sie können bei Bedarf ignoriert werden.

33
Leb

Hier ist der Link zur Dokumentation: PEP8 Style Guide für Python
Sie sollten zwei Leerzeichen zwischen den Funktionen einfügen, wie unten gezeigt:

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

Sie müssen zwei leere Zeilen zwischen sinnvollen Codeblöcken angeben.

Dazu gehören (zum Beispiel):

  • Der Importblock
  • Jede Funktion
1
Balaji Wanole
with warnings:-  
import math  
def my():  
    print("hello world")  
my()

Without warnings:-  
import math 


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

Wenn Sie hier den zweizeiligen Leerzeichen nach der import-Anweisung für den zweiten Code-Snippet sehen, der keine Warnungen ausgibt ..__ Wenn Sie zwei Methodendefinitionen schreiben, haben Sie zwei zwei Zeilen als Leerzeichen zwischen Ihrem Codeblock. 

0
Balaji Wanole

Alle Antworten scheinen richtig zu sein. Um dies von Hand zu vermeiden, können Sie auch das autopep8 package (pip install autopep8) verwenden. Das Ergebnis des Aufrufs von autopep8 filename.py ist das gleiche:

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: schau mal bei if __== "__main__":

0
serv-inc