Feiltyper i Python

Feiltyper i Python
Kodere, spesielt nybegynnere, har en tendens til å møte feil. En feil i koden forhindrer koden i å kjøre ordentlig eller på den tiltenkte måten. Spesielt faller feilene som Python kastes i en av tre kategorier: syntaksfeil, runtime -feil eller logiske feil. I denne opplæringen vil vi lære de forskjellige typene feil som Python kan kaste.

Syntaksfeil

En syntaksfeil eller en analysingsfeil er en type feil som kastes når Python ikke helt forstår hva du prøver å si. Vi må kommunisere til Python -tolken hva vi vil si omtrent som talespråket. For eksempel kan det være lurt å si gratulerer med dagen til vennen din. Men hvis du slår opp ordet lykkelig og i stedet glemmer å skrive H og Y, så blir ordet misforstått eller enda verre, det kan ikke bli fungert. På samme måte kommer Python med et sett med veldig stive regler og ord. Når du bryter reglene eller skriver ordene med en feil i det, kan ikke Python -tolken forstå hva du prøver å si, og den vil kaste en syntaksfeil. Denne feilen kan ganske enkelt fikses ved å gjennomgå syntaksen og fikse den slik at den faktisk følger regelen som Python er satt.

Eksempel 1: Glemt syntaks

hoved-.py
name = "Hva heter du? ""
Hvis navn != "Linux"
Print ("Hei % S" % Navn)

Produksjon:

Fil "C: \ Brukere \ Kalya \ PycharmProjects \ PythonProject \ Main.py ", linje 3
Hvis navn != "Linux"
^
SyntaxError: forventet ':'
Prosessen ferdig med exit code 1

Dette er uten tvil det enkleste eksemplet på en syntaksfeil. Pythons regler oppgir at det må være en kolon på slutten av IF -uttalelsen, og her har vi ganske enkelt utelatt det. Det alene har skrudd opp Python - det forstår ikke hva du ber det om å gjøre. Så den enkle løsningen er å legge til en kolon på slutten av IF -uttalelsen. Og merkelig nok, det vil fortelle deg hva som er galt og hvordan du fikser det. I dette tilfellet står det "Forventet:". Så det forteller deg at det håper på en tykktarm der.

Eksempel 2: Feil syntaks

hoved-.py
for jeg im range (5):
trykk (i)

Produksjon:

Fil "C: \ Brukere \ Kalya \ PycharmProjects \ PythonProject \ Main.py ", linje 1
for jeg im range (5):
^^
SyntaxError: Ugyldig syntaks
Prosessen ferdig med exit code 1

Her skrev jeg IM i stedet for i. Så det kastet en syntaksfeil fordi ordet som brukes er feil. I Python er et sett med ord spesielle ord, og de har allerede tisse-definerte betydninger. Når du bruker et ord som ikke er innenfor det settet, kjenner det ikke igjen og går?

Eksempel nr. 3: Manglende eller feil parentes

hoved-.py
Dictionary = ['Jim': 24, 'Jenny': 23, 'Jack': 30]
Print (Dictionary)

Produksjon:

Fil "C: \ Brukere \ Kalya \ PycharmProjects \ PythonProject \ Main.py ", linje 1
Dictionary = ['Jim': 24, 'Jenny': 23, 'Jack': 30]
^
SyntaxError: Ugyldig syntaks
Prosessen ferdig med exit code 1

I dette tilfellet knytter vi oss til å bruke en ordbok i Python. Men vi brukte ikke de krøllete seler og brukte i stedet de firkantede seler som førte til en feil. I henhold til reglene, i Python, for en ordbok, bruker vi krøllete seler.

Runtime -feil

Du kan få en feil selv om du ikke gjorde noen syntaksfeil. Når feilen oppstår under utførelsen av koden, er den også kjent som et unntak eller en runtime -feil. Så du begynner å skrive koden, og den begynner å utføre uten problemer. Men midtveis, det bare stopper og sier at det er en feil - dette kalles et unntak.

Eksempel nr. 1: Forsøker å dele en streng med et heltall

hoved-.py
Navn = 'Linuxhint'
alder = 24
Totalt = navn / alder
Print (Totalt)

Produksjon:

Fil "C: \ Brukere \ Kalya \ PycharmProjects \ PythonProject \ Main.py ", linje 4, i
Totalt = navn / alder
Typeerror: ikke støttet operandtype (er) for /: 'str' og 'int'
Prosessen ferdig med exit code 1

Her prøver vi å dele en streng med et heltall, og det kalles et unntak eller en runtime -feil.

Eksempel nr. 2: Prøver å få tilgang til en fil som ikke eksisterer

hoved-.py
f = Åpne ('fil.txt ',' r ')
trykk (f.lese())

Produksjon:

Fil "C: \ Brukere \ Kalya \ PycharmProjects \ PythonProject \ Main.py ", linje 1, i
f = Åpne ('fil.txt ',' r ')
FilenotFoundError: [Errno 2] Ingen slik fil eller katalog: 'Fil.tekst'
Prosessen ferdig med exit code 1

I dette tilfellet peker vi på en fil som ikke eksisterer. Så programmet kjører, men avsluttes tidlig med en feilmelding av runtime fordi det ikke kan finne den filen.

Logiske feil

I motsetning til en syntaksfeil eller en runtime -feil, er den logiske feilen mye vanskeligere å finne. Det er også mye vanskeligere å takle. Så Python vil ikke krasje, og det vil heller ikke vise feilmeldinger. I dette tilfellet vil programmet kjøre, og det vil gi oss et resultat. Men resultatet vil være feil. Så hvor er feilen? I programmererens logikk.

Eksempel 1: Logisk feil

hoved-.py
x = 5
y = 6
z = x+y/2
Print ("Gjennomsnittet av %f og %f er %f" %(x, y, z)))

Produksjon:

Gjennomsnittet på 5.000000 og 6.000000 er 8.000000
Prosessen ferdig med exit code 0

Her er gjennomsnittet på 5 og 6 ikke 8! Så her blir koden utført og chucked ut et resultat. Men nybegynneren ville sitte der og klø på hodet fordi resultatene er gale.

Eksempel 2: logisk feil

hoved-.py
Dictionary = 'Jim': 24, 'Jack': 45, 'John': 60
For medlem i ordbok:
Alder = ordbok [medlem]
Hvis alder < 40:
trykk ("Du er 40 år eller eldre. Du kan gå inn i dette nettstedet.")
ellers:
trykk ("Du er for ung til å gå inn i dette nettstedet")

Produksjon:

Du er 40 år eller eldre. Du kan gå inn i dette nettstedet.
Du er for ung til å gå inn i dette nettstedet
Du er for ung til å gå inn i dette nettstedet
Prosessen ferdig med exit code 0

Årsaken til denne koden er å ekskludere de som er under 40 år fra nettstedet. Men som du kanskje har lagt merke til, satte programmereren et mindre enn skilt i stedet for et større enn tegn etter alder (alder <40). Both Jack and John are older than 40 but the program says that they are too young to enter this site. Jim who is 24 is allowed because it thinks that he's older than 40. This is a logical problem. It can be solved by changing the greater than/less than sign.

I Python kan alle feilene du kommer til å bli kategorisert i tre grupper: syntaks, runtime/unntak eller logiske feil. Både syntaks og runtime -feilen vil føre til at Python krasjer. Det vil vanligvis vise en melding som gir deg beskjed om hvordan du løser problemet og hvor problemet er. Dette er ikke tilfelle for en logisk feil. En logisk feil fører ikke til at Python krasjer, men heller ut resultatene som er helt og helt gale. Så av de tre er logiske feil de vanskeligste å takle fordi vi ikke vet hvor feilen er lokalisert.