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 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! 📚🐍🚀