Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 13564|Svar: 1

[Kommunikation] 17 vanliga Python-körfel för nybörjare

[Kopiera länk]
Publicerad på 2015-12-05 13:08:56 | | |

När man lär sig Python kan det vara lite komplicerat att förstå innebörden av Pythons felmeddelanden. Här är en lista över några vanliga körfel som får ditt program att krascha.


1) Glömde lägga till :( i slutet av if, elif, else, för, while, class, def def def.

        Felet kommer att uppstå i kod som denna:

om spam == 42
    tryck("Hej!")

2) Använd = istället för == (vilket resulterar i "SyntaxError: invalid syntax")

        = är tilldelningsoperatorn och == är lika med jämförelseoperationen.Felet uppstår i kod som denna:

Om spam = 42:
    tryck("Hej!")

3) Felaktig användning av indrag. (Resulterar i "IndentationError:oväntat indrag", "IndentationError:unindit matchar ingen yttre indetationsnivå", och "IndentationError:förväntade ett indraget block")

        Kom ihåg att indragning endast används efter att satser slutar med: varefter indragningsformatet måste återställas till det tidigare indragningsformatet. Felet uppstår i kod som denna:

tryck("Hej!")
    tryck" ("Howdy!")
Eller:
om spam == 42:
    tryck("Hej!")
  tryck" ("Howdy!")
Eller:
om spam == 42:
tryck("Hej!")

4) Glöm att anropa len() i for loop-satsen (vilket resulterar i "TypeError: "list"-objektet kan inte tolkas som ett heltal")

Vanligtvis vill du iterera över en lista eller sträng genom ett index, vilket kräver att du anropar range()-funktionen. Kom ihåg att returnera len-värdet istället för att returnera denna lista.

        Felet uppstår i kod som denna:

spam = ["katt", "hund", "mus"]
för i inom räckvidd (spam):
    Skriv ut (spam)

5) Försök ändra värdet på strängen (vilket resulterar i "TypeError: "str"-objektet stöder inte objekttilldelningen)

        strängen är en oföränderlig datatyp, och felet uppstår i kod som denna:

spam = "Jag har en katt."
spam[13] = "r"
Skriv ut (spam)

Och du vill faktiskt göra detta:

spam = "Jag har en katt."
spam = spam[:13] + "r" + spam[14:]
Skriv ut (spam)

6) Försök att sammanfoga icke-strängsvärden med strängar (vilket resulterar i "TypeError: Can"t convert "int"-objekt till str implicit")

        Felet uppstår i kod som denna:

numEggs = 12
print("Jag har " + numEggs + " ägg.")

Och du vill faktiskt göra detta:

numEggs = 12
print("Jag har " + str(numEggs) + " ägg.")
Eller:
numEggs = 12
print("Jag har %s ägg." % (numEggs))

7) Glömma att sätta citattecken i början och slutet av strängen (vilket resulterar i "SyntaxError: EOL vid skanning av strängliteral")

        Felet uppstår i kod som denna:

print(Hej!")
Eller:
tryck("Hej!)
Eller:
myName = "Al"
print("Mitt namn är " + mittnamn + . Hur mår du?")

8) Felstavning av variabel- eller funktionsnamn (vilket resulterar i "NameError: name "fooba" is not defined")

        Felet uppstår i kod som denna:

foobar = "Al"
tryck("Mitt namn är " + fooba)
Eller:
spam = ruond(4.2)
Eller:
spam = Runda(4.2)

9) Felstavning av metodnamn (vilket resulterar i "AttributeError: "str"-objektet har inget attribut "lowerr"")

        Felet uppstår i kod som denna:

spam = "DETTA ÄR MED GEMENER."
spam = spam.lowerr()

10) Referenser överskrider listans maximala index (vilket resulterar i "IndexError: listindex utanför intervallet")

        Felet uppstår i kod som denna:

spam = ["katt", "hund", "mus"]
print(spam[6])

11) Att använda ett ordboksnyckelvärde som inte existerar (vilket resulterar i "KeyError: 'spam'")

        Felet uppstår i kod som denna:

spam = {"cat": "Zophie", "dog": "Basil", "mouse": "Whiskers"}
print("Namnet på min huszebra är " + spam["zebra"])

12) Försök att använda Python-nyckelord som variabelnamn (vilket resulterar i "SyntaxError: invalid syntax")

        Python-nyckeln kan inte användas som variabelnamn, felet uppstår i kod som denna:

klass = "algebra"

Python3-nyckelord är: och, som, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, Sant, försök, med, med, ge vika


13) Användning av värdeadderade operatorer i en definierad ny variabel (vilket resulterar i "NameError: name "foobar" is not defined")

        Använd inte 0- eller nullsträngar som initiala värden när du deklarerar variabler, så att en sentence spam += 1 med den självinkrementroperande operatorn är lika med spam = spam + 1, vilket innebär att spam måste ange ett giltigt initialvärde.

        Felet uppstår i kod som denna:

spam = 0
spam += 42
ägg += 42

14) Använd lokala variabler i funktioner innan lokala variabler definieras (i detta fall finns en global variabel med samma namn som den lokala variabeln) (vilket resulterar i "UnboundLocalError: lokal variabel "foobar" refererad före tilldelningen")

        Det är komplicerat att använda en lokal variabel i en funktion med samma namn som en global variabel, och användningsreglerna är: om något är definierat i en funktion, om det bara används i funktionen, är det lokalt, och vice versa.

        Det betyder att du inte kan använda den i en funktion som en global variabel innan du definierar den.

        Felet uppstår i kod som denna:

someVar = 42
def myFunction():
    print(someVar)
    someVar = 100
myFunction()

15) Försök skapa en heltalslista med range() (vilket resulterar i "TypeError: "range"-objektet stöder inte objektallokering)

        Ibland vill man få en ordnad lista med heltal, så range() verkar vara ett bra sätt att generera denna lista. Men du måste komma ihåg att range() returnerar ett "range-objekt", inte det faktiska listvärdet.

        Felet uppstår i kod som denna:

spam = räckvidd(10)
spam[4] = -1

Kanske är det här vad du vill göra:

spam = lista(intervall(10))
spam[4] = -1
(Obs: spam = range(10) fungerar i Python 2, eftersom range() i Python 2 returnerar ett listvärde, men i Python 3 genereras ovanstående fel)

16) Bra i ++ eller -- självinkrementerande operator. (Vilket resulterar i "SyntaxError: invalid syntax")

        Om du är van vid andra språk som C++, Java, PHP, etc., kan du prova att använda ++ eller -- inkrementera och subtrahera en variabel. Det finns ingen sådan operator i Python.

        Felet uppstår i kod som denna:

spam = 1
Spam++

Kanske är det det du vill göra:

spam = 1
spam += 1

17) Glömde lägga till självparametern till metodens första argument (vilket resulterade i "TypeError: myMethod() tar inga argument (1 given)")

        Felet uppstår i kod som denna:

klass Foo():
    def myMethod():
        tryck("Hej!")
a = Foo()
a.myMethod()





Föregående:WiFi trådlös knäckningsprogramvara + Tutorial (vattendroppe)
Nästa:【iOS Development Series handledning släppt i sommar】IOS projektets källkod
Publicerad på 2015-12-05 13:34:16 |
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com