Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 13564|Odpoveď: 1

[Komunikácia] 17 bežných chýb v Pythone za behu pre začiatočníkov

[Kopírovať odkaz]
Zverejnené 5. 12. 2015 13:08:56 | | |

Pri učení sa Pythonu môže byť trochu zložité pochopiť význam chybových hlásení v Pythone. Tu je zoznam niektorých bežných chýb za behu, ktoré spôsobujú pád programu.


1) Zabudol som pridať :( na konci if, elif, else, for, while, class, def def def def.

        Chyba sa vyskytne v kóde takto:

ak spam == 42
    print ("Hello!")

2) Použiť = namiesto == (čo vedie k "SyntaxError: neplatná syntax")

        = je priraďovací operátor a == je rovná porovnávacej operácii.Chyba sa vyskytuje v kóde takto:

ak spam = 42:
    print ("Hello!")

3) Nesprávne použitie odsadenia. (Čo vedie k "IndentationError:unexpected indent", "IndentationError:unindent doesn't match any outer indetation level" a "IndentationError:expected an indented block")

        Pamätajte, že odsadenie sa používa iba po vyjadreniach končiacich na: po ktorých sa formát odsadenia musí vrátiť na predchádzajúci odsadenie. Chyba sa vyskytuje v kóde takto:

print ("Hello!")
    tlač ("Ahoj!")
Alebo:
ak spam == 42:
    print ("Hello!")
  tlač ("Ahoj!")
Alebo:
ak spam == 42:
print ("Hello!")

4) Zabudnutie volať len() v príkaze for loop (čo vedie k "TypeError: objekt "list" nemožno interpretovať ako celé číslo")

Zvyčajne chcete iterovať zoznam alebo reťazec cez index, čo vyžaduje volanie funkcie range(). Nezabudnite vrátiť hodnotu len namiesto vrátenia tohto zoznamu.

        Chyba sa vyskytuje v kóde takto:

spam = ["mačka", "pes", "myš"]
Pre I v dosahu (spam):
    print(spam)

5) Skúste upraviť hodnotu reťazca (čo vedie k "TypeError: objekt "str" nepodporuje priradenie položky")

        reťazec je nemenný dátový typ a chyba sa vyskytuje v kóde takto:

spam = "Mám mačku."
spam[13] = "r"
print(spam)

A naozaj to chcete urobiť:

spam = "Mám mačku."
spam = spam[:13] + "r" + spam[14:]
print(spam)

6) Pokus spojiť hodnoty mimo reťazca s reťazcami (čo vedie k "TypeError: Nedá sa implicitne previesť objekt "int" na str)

        Chyba sa vyskytuje v kóde takto:

numEggs = 12
print("Mám " + numEggs + " vajcia.")

A naozaj to chcete urobiť:

numEggs = 12
print("Mám " + str(numEggs) + " vajcia.")
Alebo:
numEggs = 12
print("Mám %s vajíčok." % (numEggs))

7) Zabudnutie dať úvodzovky na začiatok a koniec reťazca (čo vedie k "SyntaxError: EOL pri skenovaní string literal")

        Chyba sa vyskytuje v kóde takto:

tlač (Ahoj!")
Alebo:
tlač ("Ahoj!)
Alebo:
myName = "Al"
tlač ("Moje meno je " + mojeMeno + . Ako sa máš?")

8) Nesprávne napísané mená premenných alebo funkcií (čo vedie k "NameError: name "fooba" nie je definovaný")

        Chyba sa vyskytuje v kóde takto:

foobar = "Al"
tlač ("Volám sa " + fooba)
Alebo:
spam = ruond(4.2)
Alebo:
spam = kolo (4.2)

9) Nesprávne napísané názvy metód (čo vedie k "AttributeError: objekt "str" nemá atribút "lowerr"")

        Chyba sa vyskytuje v kóde takto:

spam = "TOTO JE MALÝM PÍSMENOM."
spam = spam.lowerr()

10) Referencie prekročia maximálny index zoznamu (čo vedie k "IndexError: index zoznamu mimo rozsahu")

        Chyba sa vyskytuje v kóde takto:

spam = ["mačka", "pes", "myš"]
print(spam[6])

11) Použitie slovníkovej kľúčovej hodnoty, ktorá neexistuje (čo vedie k "KeyError: 'spam'")

        Chyba sa vyskytuje v kóde takto:

spam = {"cat": "Zophie", "dog": "Basil", "mouse": "Whiskers"}
print("Meno mojej zebry je " + spam["zebra"])

12) Pokus použiť kľúčové slovo v Pythone ako názov premennej (čo vedie k "SyntaxError: invalid syntax")

        Python kľúč nie je možné použiť ako názov premennej, chyba sa vyskytuje v kóde takto:

trieda = "algebra"

Kľúčové slová Python3 sú: a, as, assert, break, class, continue, def, del, elif, else, except, False, konečne, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, Pravda, skús, zatiaľ čo s, ustúp


13) Použitie operátorov s pridanou hodnotou v definovanej novej premennej (čo vedie k "NameError: názov "foobar" nie je definovaný")

        Pri deklarácii premenných nepoužívajte 0 ani nulové reťazce ako počiatočné hodnoty, takže veta spam += 1 pomocou samo-inkrementujúceho operátora je rovná spam = spam + 1, čo znamená, že spam musí špecifikovať platnú počiatočnú hodnotu.

        Chyba sa vyskytuje v kóde takto:

spam = 0
spam += 42
vajcia += 42

14) Použiť lokálne premenné vo funkciách pred definovaním lokálnych premenných (v tomto prípade existuje globálna premenná s rovnakým názvom ako lokálna premenná) (čo vedie k "UnboundLocalError: local variable "foobar" referencovaná pred priradením")

        Je zložité použiť lokálnu premennú vo funkcii s rovnakým názvom ako globálna premenná a pravidlá použitia sú: ak je niečo definované vo funkcii, ak sa to používa iba vo funkcii, je to lokálne, a naopak.

        To znamená, že ho nemôžete použiť vo funkcii ako globálnu premennú pred jej definovaním.

        Chyba sa vyskytuje v kóde takto:

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

15) Pokus vytvoriť celočíselný zoznam pomocou range() (čo vedie k "TypeError: objekt "range" nepodporuje priraďovanie položiek")

        Niekedy chcete získať usporiadaný zoznam celých čísel, takže range() sa zdá byť dobrý spôsob, ako tento zoznam vygenerovať. Musíte si však uvedomiť, že range() vracia "range object", nie skutočnú hodnotu v zozname.

        Chyba sa vyskytuje v kóde takto:

spam = rozsah(10)
spam[4] = -1

Možno toto je to, čo chcete urobiť:

spam = list(range(10))
spam[4] = -1
(Poznámka: spam = range(10) funguje v Pythone 2, pretože v Pythone 2 range() vracia zoznamovú hodnotu, ale v Pythone 3 sa generuje vyššie uvedená chyba)

16) Nice in ++ alebo -- operátor samo-inkrementu. (Výsledkom je "SyntaxError: neplatná syntax")

        Ak ste zvyknutí na iné jazyky ako C++, Java, PHP a podobne, možno by ste mali skúsiť použiť ++ alebo -- inkrementovať a odčítať premennú. V Pythone takýto operátor neexistuje.

        Chyba sa vyskytuje v kóde takto:

spam = 1
spam++

Možno to je to, čo chcete urobiť:

spam = 1
spam += 1

17) Zabudol som pridať parameter self k prvému argumentu metódy (čo vedie k "TypeError: myMethod() takes no arguments (1 dan)")

        Chyba sa vyskytuje v kóde takto:

trieda Foo():
    def myMethod():
        print ("Hello!")
a = Foo()
a.myMethod()





Predchádzajúci:WiFi bezdrôtový softvér na prelomenie + návod (kvapka vody)
Budúci:【iOS vývojový séria tutoriál vydaný v lete】Zdrojový kód projektu IOS
Zverejnené 5. 12. 2015 13:34:16 |
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com