Lær deg Python_12 - itnett/FTD02H-N GitHub Wiki
Du har rett, beklager feilen i formateringen. Her er den korrigerte delen:
Newton-Raphsons Metode
Matematikk:
Newton-Raphsons metode er en iterativ metode for å finne røttene til en funksjon $( f(x) )$.
Formel:
$$ x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} $$
Eksempel:
La oss finne roten til ( f(x) = x^2 - 2 ), som er ( \sqrt{2} ).
Del 18: Feil- og Unntakshåndtering i Python 🐞
I denne delen skal vi se på hvordan vi kan håndtere feil og unntak i Python for å skrive mer robust og pålitelig kode.
try
, except
, else
, og finally
1. Unntakshåndtering med Python:
Unntakshåndtering lar oss håndtere feil som oppstår under kjøring uten at programmet krasjer.
Eksempel:
try:
nummer = int(input("Skriv inn et tall: "))
except ValueError:
print("Du må skrive inn et gyldig tall!")
else:
print(f"Du skrev tallet {nummer}")
finally:
print("Programmet er ferdig.")
Forklaring:
try
-blokken: Koden som kan forårsake et unntak.except
-blokken: Koden som kjøres hvis et unntak oppstår.else
-blokken: Kjøres hvis ingen unntak oppstår.finally
-blokken: Kjøres alltid, uavhengig av om det oppstod et unntak eller ikke.
2. Egendefinerte Unntak
Noen ganger er det nyttig å definere egne unntak for spesifikke feiltilfeller.
Python:
class NegativVerdiFeil(Exception):
pass
def beregn_kvadratroten(tall):
if tall < 0:
raise NegativVerdiFeil("Kan ikke beregne kvadratroten av et negativt tall.")
else:
return tall ** 0.5
try:
resultat = beregn_kvadratroten(-9)
except NegativVerdiFeil as e:
print(e)
Utdata:
Kan ikke beregne kvadratroten av et negativt tall.
3. Logging av Feil
Ved å bruke logging
-modulen kan vi logge feil og hendelser for enklere debugging.
Eksempel:
import logging
logging.basicConfig(filename='app.log', level=logging.ERROR)
try:
resultat = 10 / 0
except ZeroDivisionError as e:
logging.error("Feil oppstod: %s", e)
Dette vil skrive feilmeldingen til filen app.log
.
pdb
4. Debugging med pdb
er Pythons innebygde debugger som lar deg trinnvis gjennomgå koden.
Eksempel:
import pdb
def feilfunksjon():
a = 1
b = 2
pdb.set_trace()
c = a + b
return c
feilfunksjon()
Når pdb.set_trace()
nås, kan du skrive kommandoer i terminalen for å inspisere variabler.
Del 19: Testing av Kode 🧪
Å teste koden din er viktig for å sikre at den fungerer som forventet.
unittest
1. Enhetstesting med Python:
import unittest
def addisjon(a, b):
return a + b
class TestMatematikk(unittest.TestCase):
def test_addisjon(self):
self.assertEqual(addisjon(2, 3), 5)
self.assertEqual(addisjon(-1, 1), 0)
if __name__ == '__main__':
unittest.main()
assert
-setninger
2. Bruk av assert
brukes for å sjekke at en betingelse er sann under kjøring.
Eksempel:
def invers(tall):
assert tall != 0, "Kan ikke dele på null."
return 1 / tall
print(invers(2))
print(invers(0)) # Dette vil utløse en AssertionError
Del 20: Avansert Objektorientert Programmering 🧩
1. Abstrakte Klasser og Metoder
Bruk abc
-modulen for å lage abstrakte klasser.
Python:
from abc import ABC, abstractmethod
class Dyr(ABC):
@abstractmethod
def lyd(self):
pass
class Hund(Dyr):
def lyd(self):
return "Voff!"
hund = Hund()
print(hund.lyd())
2. Flere Arv
En klasse kan arve fra flere basisklasser.
Eksempel:
class Flygende:
def fly(self):
print("Flyr!")
class Svømmende:
def svøm(self):
print("Svømmer!")
class And(Flygende, Svømmende):
pass
and_ = And()
and_.fly()
and_.svøm()
Avslutning 🏁
Gjennom denne guiden har vi dekket en rekke avanserte emner innen programmering med Python, inkludert feil- og unntakshåndtering, testing og avansert objektorientert programmering.
Videre Læring 🚀
- Design Patterns: Lær om designmønstre som kan forbedre koden din.
- Funksjonell Programmering: Utforsk funksjonelle programmeringsparadigmer i Python.
- Asynkron Programmering: Lær om
asyncio
for å skrive asynkrone applikasjoner.
Ressurser 📚
-
Bøker:
- Effective Python av Brett Slatkin
- Clean Code av Robert C. Martin
-
Online Kurs:
- Advanced Python på Pluralsight eller Udemy
Merk: Alle matematiske uttrykk er formatert for å være kompatible med GitHub wiki markdown ved å bruke $( ... )$ for inline-matematikk og $$ ... $$ for blokkmatematikk.
Lykke til videre på din reise innen matematikk og Python-programmering! 📚🐍🚀