10 Common Python Error Types and How to Resolve Them

Als programmeur kom je onvermijdelijk fouten tegen tijdens het ontwikkelen van software program. Dit kan variëren van fouten in uw logica die tot onverwachte resultaten leiden, fouten die voortkomen uit het overtreden van de regels van een programmeertaal, tot zelfs fouten die optreden tijdens het uitvoeren van uw programma, en vele andere. Deze fouten worden gewoonlijk bugs genoemd.

Bugs zijn alomtegenwoordig in elke programmeertaal, ongeacht hoe gemakkelijk het is om de taal te leren of te gebruiken.

In Python bijvoorbeeld, hoewel de taal de nadruk legt op leesbaarheid, een expressieve syntaxis volgt en als relatief eenvoudig te leren en te gebruiken wordt beschouwd in vergelijking met andere programmeertalen, ben je nog steeds niet immuun voor programmeerfouten als je Python gebruikt.

Omdat er altijd fouten kunnen optreden, is het een goede manier om hiermee om te gaan door te leren over de verschillende soorten fouten die kunnen optreden en hoe ze ontstaan. Hierdoor kunt u deze fouten tijdens het programmeren vermijden of minimaliseren en weet u ook hoe u ermee om moet gaan als ze zich voordoen.

Hier zijn enkele veel voorkomende Python-fouten die u kunt tegenkomen tijdens het programmeren met behulp van de taal:

Syntaxisfouten

Een syntaxisfout is een fout die ontstaat wanneer u code schrijft die in strijd is met de regels van de programmeertaal die u gebruikt. Dit resulteert in een ongeldige coderegel.

In Python moet bijvoorbeeld bij het afdrukken van een string deze tussen aanhalingstekens worden geplaatst. Als u dit niet doet, resulteert dit in een syntaxisfout.

Er kan ook een syntaxisfout optreden als u haakjes, vierkante haakjes of accolades opent of sluit, trefwoorden of functienamen verkeerd spelt, dubbele punten aan het einde van stroomcontrole-instructies mist, of als u vereiste operators in expressies mist.

Over het algemeen zullen syntaxisfouten optreden als u een regel overtreedt over hoe Python-code moet worden geschreven.

## syntax error arising from lacking citation mark
## across the string being printed
print("Hi there World)

age = 20
## Syntax error arising from lacking colon in an if assertion
if age > 18
    print("Age is over 18")

## Syntax error as a result of '(' was by no means closed
def sq.(x:
    return x * x
print(sq.(4))

Wanneer u de bovenstaande code uitvoert, komt u een foutmelding tegen, zoals hieronder weergegeven:

Screenshot-van-2023-06-01-19-45-08

De foutmelding bij het uitvoeren van de code is als volgt:

  File "/dwelling/madici/Desktop/helloworld.py", line 1
    print("Hi there World)
          ^
SyntaxError: unterminated string literal (detected at line 1)

Om deze fouten op te lossen, gebruikt u de juiste Python-syntaxis, zoals hieronder weergegeven:

print("Hi there World")

age = 20
if age > 18:
    print("Age is over 18")

def sq.(x):
    return x * x
print(sq.(4))

Inspringfout

In tegenstelling tot andere talen zoals Java, C of C++, die accolades gebruiken om codeblokken te scheiden, gebruikt Python inspringing om de hiërarchie en structuur van codeblokken te definiëren. Wanneer u bijvoorbeeld controle-instructies schrijft in Java, wordt alle code die moet worden uitgevoerd nadat de voorwaarde is geëvalueerd, tussen accolades geplaatst.

In Python wordt het codeblok echter ingesprongen. Een typische inspringing in Python bestaat uit vier spaties of één tab. Het aantal spaties doet er echter niet toe, zolang het maar constant blijft gedurende de hele code die wordt geschreven.

Als Python-programmeur zul je waarschijnlijk inspringfouten tegenkomen als je er niet in slaagt de vereiste inspringing toe te voegen, zoals bij het schrijven van besturingsinstructies of functies, als je zowel tabs als spaties gebruikt om inspringingen te maken, omdat dit de tolk in verwarring brengt, als je inspringingen plaatst op de verkeerde plaats of wanneer uw inspringingen niet constant zijn in uw codebase.

Hieronder ziet u een voorbeeld van code die resulteert in een inspringfout:

age = 20
if age > 18:
print("Age is bigger than 18")
   print("You are allowed to drive")
else:
    print("Age is lower than 18")

De foutmeldingen die voortvloeien uit de bovenstaande code worden hieronder weergegeven:

Screenshot-van-2023-06-04-11-21-59

De foutmelding bij het uitvoeren van de code is als volgt:

  File "/dwelling/madici/Desktop/helloworld.py", line 3
    print("Age is bigger than 18")
    ^
IndentationError: anticipated an indented block after 'if' assertion on line 2

Om de fouten te corrigeren, laat u de regel achter de als assertion als inspringing vereist is en zorg ervoor dat deze overeenkomt met de inspringing in de relaxation van de code, zoals hieronder weergegeven:

age = 20
if age > 18:
   print("Age is bigger than 18")
   print("You are allowed to drive")
else:
   print("Age is lower than 18")

TypeError

In Python is een TypeError een uitzondering die optreedt wanneer u een bewerking probeert uit te voeren met een incompatibel gegevenstype. Als u bijvoorbeeld een string en een geheel getal probeert toe te voegen of een stringgegevenstype samenvoegt met een geheel getal, zult u een TypeError tegenkomen.

U kunt ook TypeErrors tegenkomen wanneer u functies of methoden met onjuiste gegevenstypen gebruikt, wanneer u een niet-gehele index probeert te gebruiken om toegang te krijgen tot gadgets in een iterabel bestand, zoals een lijst, of wanneer u probeert een object te doorlopen dat niet itereerbaar is.

Over het algemeen zal elke bewerking waarbij gebruik wordt gemaakt van een onjuist gegevenstype leiden tot een TypeError.

Voorbeelden van bewerkingen die tot TypeErrors kunnen leiden, worden hieronder weergegeven:

# Sort Error ensuing from concatenating a string an an integer
age = 25
message = "I'm " + age + " years outdated."


list1 = [1, "hello", 5, "world", 18, 2021]
#Sort errors ensuing from fallacious utilization of builtin in strategies
print(sum(list1))

#TypeError ensuing from including a string and an integer
num1 = 10
num2 = "16"
print(num1 + num2)

#TypeError ensuing from utilizing a non integer index
list2 = ["hello", "from", "the", "other", "side"]
print(list2["1"])

De foutmeldingen die voortvloeien uit de bovenstaande code worden hieronder weergegeven:

Screenshot-van-2023-06-04-11-57-37

Een voorbeeld van een TypeError-bericht uit de code wordt hieronder weergegeven:

  File "/dwelling/madici/Desktop/helloworld.py", line 3, in <module>
    message = "I'm " + age + " years outdated."
              ~~~~~~~~^~~~~
TypeError: can solely concatenate str (not "int") to str

Om de fouten te verwijderen, gebruikt u de juiste gegevenstypen of typeconversies, zoals hieronder weergegeven:

age = 25
message = "I'm " + str(age) + " years outdated."

list1 = [1, 5, 18, 2021]
print(sum(list1))

num1 = 10
num2 = "16"
print(num1 + int(num2))

list2 = ["hello", "from", "the", "other", "side"]
print(list2[1])

AttribuutFout

In Python treedt een AttributeError op wanneer u een attribuut probeert te gebruiken dat niet bestaat voor het object of een methode aanroept die niet bestaat voor het object waarop het wordt aangeroepen. Een AttributeError geeft aan dat een object geen attribuut of methode heeft die erop wordt aangeroepen.

Als u bijvoorbeeld een stringmethode aanroept op een geheel getal, komt u een AttributeError tegen omdat de methode niet bestaat op het kind object waarop u deze aanroept.

In het onderstaande voorbeeld wordt de methode capitalize(), die wordt gebruikt om de eerste letter van een string naar hoofdletters te converteren, aangeroepen op een geheel getal. Het resultaat is een attribuutfout omdat int niet over de capitalize()-methode beschikt.

# AttributeError arising from calling capitalize() on an int worth
num = 1445
cap = num.capitalize()
print(cap)

Het uitvoeren van deze code resulteert in het onderstaande foutbericht:

Screenshot-van-2023-06-08-10-04-12

Het AttributeError-bericht uit de code is als volgt:

  File "/dwelling/madici/Desktop/helloworld.py", line 3, in <module>
    cap = num.capitalize()
          ^^^^^^^^^^^^^^
AttributeError: 'int' object has no attribute 'capitalize'

Om een ​​AttributeError op te lossen, zorgt u ervoor dat de methode of het attribuut dat u aanroept bestaat voor het kind object waarop u het aanroept. In dit geval misplaced het aanroepen van capitalize() op een stringgegevenstype deze fout op, zoals hieronder weergegeven:

Screenshot-van-2023-06-08-10-07-36

ImportFout

De ImportError in Python treedt op wanneer u een module probeert te importeren die niet kan worden gevonden of niet toegankelijk is in uw huidige omgeving. Het kan zijn dat het nog niet is geïnstalleerd, dat u het pad niet appropriate hebt geconfigureerd of dat u de module die u probeert te installeren verkeerd heeft gespeld.

Een ImportError heeft een enkele onderliggende subklasse genaamd ModuleNotFoundError. Dit is de fout die wordt gegenereerd wanneer u probeert een module te importeren die niet kan worden gevonden.

De onderstaande code probeert bijvoorbeeld de data-analysebibliotheek te importeren panda’s genereert een dergelijke fout omdat de module nog niet is geïnstalleerd.

Screenshot-van-2023-06-09-10-46-17

Het gegenereerde ImportError-bericht wordt hieronder weergegeven:

  File "/dwelling/madici/Desktop/helloworld.py", line 1, in <module>
    import pandas
ModuleNotFoundError: No module named 'pandas'

Om een ​​dergelijke fout op te lossen, moet u ervoor zorgen dat de modules die u probeert te importeren, zijn geïnstalleerd. Als de fout hiermee niet is opgelost, controleer dan of u de juiste spelling voor de module en het juiste bestandspad gebruikt om toegang te krijgen tot de module.

Waardefout

Dit is een uitzondering die optreedt wanneer een functie in Python een waarde van het juiste gegevenstype ontvangt, maar de waarde een ongepaste waarde is. Bijvoorbeeld de Wiskunde.sqrt() De functie die wordt gebruikt om de vierkantswortel van numerieke waarden te vinden, retourneert een ValueError als u een negatief getal doorgeeft.

Hoezeer de waarde ook van het juiste kind zal zijn, dat wil zeggen een numerieke waarde, een negatieve waarde maakt het een ongepaste waarde voor de

De functie int() die een getal of een tekenreeks converteert, retourneert een ValueError als u een tekenreeks doorgeeft die geen numerieke tekenreekswaarde is. Het doorgeven van “123” of “45” aan de functie retourneert geen fout, aangezien de tekenreeksen kunnen worden geconverteerd naar de juiste gehele waarde.

Als u echter een tekenreeks doorgeeft die geen numerieke tekenreekswaarde is, zoals ‘Hallo’, wordt een ValueError geretourneerd. Dit komt omdat ‘Hallo’, hoewel het een tekenreeks is, ongepast is omdat het geen geheel getal-equivalent heeft.

Hieronder ziet u een voorbeeld van code die een ValueError genereert:

# Worth error ensuing from inappropriate int worth in sqrt()
import math
num = -64
root = math.sqrt(num)
print(root)

# Worth error ensuing from passing a string with no integer
# equal into int() operate
numString = "Hi there"
num = int(numString)
print(num)

De fouten uit de bovenstaande code worden hieronder weergegeven:

Screenshot-van-2023-06-08-11-21-53

Het gegenereerde foutbericht is als volgt:

  File "/dwelling/madici/Desktop/helloworld.py", line 4, in <module>
    root = math.sqrt(num)
           ^^^^^^^^^^^^^^
ValueError: math area error

Om de fout te corrigeren, gebruikt u de juiste waarden in de functies, zoals hieronder weergegeven:

import math
num = 64
root = math.sqrt(num)
print(root)

numString = "5231"
num = int(numString)
print(num)

IOfout

De IOError (Enter/Output Error) is een uitzondering die optreedt wanneer een invoer- of uitvoerbewerking mislukt. Dit kan worden veroorzaakt door te proberen toegang te krijgen tot een bestand dat niet bestaat, door onvoldoende schijfopslag op uw apparaat, door te proberen toegang te krijgen tot een bestand waarvoor u niet voldoende toegangsrechten heeft of wanneer u probeert toegang te krijgen tot een bestand dat momenteel wordt gebruikt door andere operaties.

Methoden zoals open(), lees(), schrijf() En dichtbij() die doorgaans worden gebruikt bij het werken met bestanden, veroorzaken waarschijnlijk een dergelijke fout.

Beschouw de onderstaande code die probeert een bestand met de naam “notes.txt” te openen dat niet bestaat. De code resulteert in een IOError die de FileNotFoundError genereert:

Screenshot-van-2023-06-09-10-19-58

Met de volgende foutmelding:

  File "/dwelling/madici/Desktop/helloworld.py", line 2, in <module>
    file1 = open("notes.txt", "r")
            ^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or listing: 'notes.txt'

Om de bovenstaande fout te voorkomen, hoeft u er alleen maar voor te zorgen dat het bestand “notes.txt” bestaat in de map waarin u de terminal uitvoert. Een andere manier om IOErrors af te handelen is het gebruik van de probeer behalve blok, zoals hieronder weergegeven:

Screenshot-van-2023-06-09-10-32-52

NaamFout

De NameError is een uitzondering die u tegenkomt wanneer u een variabele, functie of module probeert te gebruiken die niet bestaat, niet is gedefinieerd in het huidige bereik of waaraan geen waarde is toegewezen.

Een dergelijke fout treedt doorgaans op als u namen van variabelen of functies verkeerd spelt of gebruikt voordat ze zijn gedefinieerd. Als u een module gebruikt zonder deze te importeren, resulteert dit ook in een NameError.

De volgende code resulteert in een NameError-uitzondering:

# title error arises as a result of the maths module has not been imported
num = 64
root = math.sqrt(64)
print(root)

# NameError arises as a result of x is used earlier than it's outlined
y = 23
print(x)

#NameEror as a result of operate title just isn't outlined
def greet():
    print("Good morning")
nice() #ameError: title 'nice' just isn't outlined

De volgende foutmeldingen zijn het resultaat van de bovenstaande code:

Screenshot-van-2023-06-08-11-56-02

Hieronder ziet u een voorbeeld van een NameError-bericht:

  File "/dwelling/madici/Desktop/helloworld.py", line 3, in <module>
    root = math.sqrt(64)
           ^^^^
NameError: title 'math' just isn't outlined

Om een ​​dergelijke NameError op te lossen, moet u ervoor zorgen dat u geen modules gebruikt voordat u ze importeert, dat u geen variabelen of functies gebruikt voordat u ze definieert, en dat u de namen van functies of variabelen niet verkeerd spelt:

import math
num = 64
root = math.sqrt(64)
print(root)

y = 23
print(y)

def greet():
    print("Good morning")
greet()

Indexfout

Een IndexError is een uitzondering die optreedt wanneer u probeert toegang te krijgen tot een index in een lijst of tuple die buiten bereik ligt. Beschouw de onderstaande lijst:

list1 = [1, 2, 3, 4, 5]

De lijst bestaat uit vijf elementen. Python telt indexen vanaf 0 (nul). Daarom heeft de bovenstaande lijst indexen variërend van 0 tot n-1, waarbij n het aantal elementen in de lijst is. In dit geval zal de index of de lijst variëren van 0 tot 4.

Als u probeert toegang te krijgen tot een aspect met een index groter dan 4, zult u een IndexError tegenkomen omdat de index buiten het bereik valt in de lijst waaruit u toegang probeert te krijgen tot een aspect. De onderstaande code genereert een IndexError:

list1 = [1, 2, 3, 4, 5]
merchandise = list1[6] #IndexError as a result of the record index is out of vary
print(merchandise)

De fout van de code wordt hieronder weergegeven:

Screenshot-van-2023-06-09-09-02-43

Het gegenereerde IndexError-bericht is als volgt:

  File "/dwelling/madici/Desktop/helloworld.py", line 2, in <module>
    merchandise = list1[6] #IndexError as a result of the record index is out of vary
           ~~~~~^^^
IndexError: record index out of vary

De beste manier om een ​​IndexError te voorkomen is door gebruik te maken van de bereik() En len() functies om ervoor te zorgen dat u alleen toegang krijgt tot elementen die binnen bereik zijn, zoals:

list1 = [1, 2, 3, 4, 5]

for i in vary(len(list1)):
    print(list1[i])

Sleutelfout

Een KeyError is een uitzondering die optreedt wanneer u probeert toegang te krijgen tot een merchandise uit een woordenboek met behulp van een sleutel, en de sleutel niet in het woordenboek wordt gevonden. Beschouw het onderstaande woordenboek:

cities = {"Canada": "Ottawa", "USA": "Washington", "Italy": "Rome"}

De sleutels in het woordenboek zijn “Canada”, “VS”, “Italië”. Met de drie toetsen heeft u toegang tot de gadgets uit het stedenwoordenboek. Als u echter probeert toegang te krijgen tot een aspect met een sleutel die niet bestaat, zoals ‘Brazilië’, komt u een KeyError tegen, zoals hieronder weergegeven:

Screenshot-van-2023-06-09-09-38-06

Het gegenereerde KeyError-bericht wordt hieronder weergegeven:

  File "/dwelling/madici/Desktop/helloworld.py", line 6, in <module>
    print(cities["Brazil"])
          ~~~~~~^^^^^^^^^^
KeyError: 'Brazil'

Om een ​​KeyError op te lossen, moet u ervoor zorgen dat de sleutels die u gebruikt om toegang te krijgen tot elementen in een woordenboek daadwerkelijk aanwezig zijn in het woordenboek. Om dit te doen, kun je een if…else-instructie gebruiken, zoals:

cities = {"Canada": "Ottawa", "USA": "Washington", "Italy": "Rome"}

nation = "Canada"

if nation in cities:
    print("The capital metropolis of " + nation + " is " + cities[country])
else:
	print("The important thing " + nation + " just isn't current within the cities dictionary")

Op deze manier voorkom je dat je KeyErrors tegenkomt bij het benaderen van elementen uit een woordenboek

Conclusie

Bij het coderen in Python zul je, ongeacht je kennisniveau, onvermijdelijk fouten tegenkomen. Zorg er daarom voor dat u vertrouwd raakt met de verschillende soorten fouten die in het artikel worden benadrukt, zodat u er zeker van kunt zijn dat u ze kunt afhandelen wanneer ze zich voordoen.

U kunt ook enkele nuttige oneliners in Python verkennen om algemene taken te vereenvoudigen.

Leave a Comment

porno izle altyazılı porno porno