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.
1. Unntakshåndtering med try, except, else, og finally
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.
4. Debugging med pdb
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.
1. Enhetstesting med unittest
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()
2. Bruk av assert-setninger
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 
asynciofor å 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! 📚🐍🚀