Lær deg Python_Modul_1‐4_Del4 - itnett/FTD02H-N GitHub Wiki

Flott, da fortsetter vi med neste del! Nå skal vi dykke enda dypere inn i flere viktige temaer som inkluderer:

  1. Lister i avanserte applikasjoner – hvordan vi kan bruke lister på kreative måter for å løse mer komplekse problemer.
  2. Algoritmisk tenkning – forstå hvordan vi kan bryte ned problemer til trinnvise løsninger ved hjelp av algoritmer.
  3. Innledning til funksjoner i Python – hvordan vi skriver funksjoner og bruker dem effektivt i koden vår.

🐍 Python Essentials 1 – Modul 4 (Del 9): Lister i Avanserte Applikasjoner og Algoritmisk Tenkning 🛠️


1️⃣ Lister i Avanserte Applikasjoner 🛠️

Lister er en av de mest fleksible datastrukturene i Python, og vi kan bruke dem i mange forskjellige sammenhenger. La oss utforske noen flere avanserte måter vi kan bruke lister på.

2D-lister (Lister av lister):

En 2D-liste er en liste som inneholder andre lister som elementer. Dette er nyttig når du trenger å jobbe med tabeller eller matriser.

Eksempel:

matrise = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Skriver ut elementet på rad 2, kolonne 3 (som er 6)
print(matrise[1][2])  # Skriver ut: 6

2D-lister lar deg representere data i to dimensjoner, noe som er nyttig i for eksempel regneark, bilder eller spill.


Listekomprimering med betingelser:

List comprehension er en kraftig teknikk i Python som lar deg lage nye lister basert på eksisterende lister med færre linjer kode. Du kan også inkludere betingelser i list comprehension for å filtrere data.

Eksempel:

tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
partall = [x for x i tall hvis x % 2 == 0]
print(partall)  # Skriver ut: [2, 4, 6, 8, 10]

Nestede lister og løkker:

Når du jobber med 2D-lister, vil du ofte bruke nestede løkker for å iterere over alle elementene.

Eksempel:

matrise = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for rad i matrise:
    for element i rad:
        print(element, end=" ")  # Skriver ut alle elementene på én linje

Dette skriver ut:

1 2 3 4 5 6 7 8 9

Fletting av flere lister:

Hvis du har flere lister, kan du kombinere dem element for element ved å bruke zip-funksjonen.

Eksempel:

navn = ['Ole', 'Kari', 'Per']
alder = [30, 25, 35]

kombinert = zip(navn, alder)
for n, a i kombinert:
    print(f'{n} er {a} år gammel.')

Dette skriver ut:

Ole er 30 år gammel.
Kari er 25 år gammel.
Per er 35 år gammel.

2️⃣ Algoritmisk Tenkning 💡

For å løse problemer på en effektiv måte i Python, er det viktig å utvikle en algoritmisk tenkning. Dette betyr at vi kan bryte ned problemer i en sekvens av trinn som kan implementeres som kode.

Hva er en algoritme? 🤔

En algoritme er en trinnvis plan for å løse et problem. Når vi programmerer, lager vi ofte algoritmer for å fortelle datamaskinen nøyaktig hva den skal gjøre, trinn for trinn.

Eksempel på en enkel algoritme:

La oss si at vi ønsker å finne det største tallet i en liste. Her er en trinnvis algoritme:

  1. Sett et startpunkt for det største tallet (f.eks. det første tallet i listen).
  2. Gå gjennom resten av tallene i listen.
  3. Hvis et tall er større enn det nåværende største tallet, oppdater det største tallet.
  4. Når du har gått gjennom alle tallene, er det største tallet funnet.

Implementering av algoritmen i Python:

tall = [3, 5, 2, 9, 4]
største = tall[0]  # Start med det første tallet

for nummer i tall:
    if nummer > største:
        største = nummer

print(f'Det største tallet er: {største}')

Dette skriver ut:

Det største tallet er: 9

Oppdeling av Problemer:

En viktig del av algoritmisk tenkning er å bryte ned komplekse problemer til mindre, mer håndterlige deler. Dette gjør det enklere å lage løsninger som fungerer godt.

For eksempel: Hvis vi ønsker å lage et program som simulerer en butikk, kan vi bryte problemet ned i flere deler:

  1. Håndtere lagerbeholdning.
  2. Behandle kundebestillinger.
  3. Beregne totalpriser med moms.

3️⃣ Innledning til Funksjoner i Python 🛠️

Hva er en funksjon?

En funksjon er en blokkkode som kan kjøres flere ganger, noe som lar deg gjenbruke kode på en effektiv måte. Funksjoner gjør koden din mer organisert og enklere å lese.

Hvordan definere en funksjon:

For å definere en funksjon i Python bruker vi nøkkelordet def, etterfulgt av funksjonens navn og en parentes.

Eksempel:

def hils():
    print("Hei, velkommen!")

# Kall funksjonen
hils()  # Skriver ut: Hei, velkommen!

Funksjoner med argumenter:

Du kan også definere funksjoner som tar inn argumenter for å gjøre dem mer fleksible.

Eksempel:

def hils(navn):
    print(f'Hei, {navn}!')

hils("Ole")  # Skriver ut: Hei, Ole!

Funksjoner som returnerer verdier:

Noen funksjoner kan utføre beregninger og returnere et resultat.

Eksempel:

def addisjon(a, b):
    return a + b

resultat = addisjon(3, 4)
print(resultat)  # Skriver ut: 7

Tenk Etter 💡

Hvorfor tror du funksjoner er viktige i programmering? Funksjoner lar oss gjenbruke kode, noe som sparer tid og gjør koden lettere å vedlikeholde. Hver gang du ser en repetitiv handling i koden din, kan du vurdere å bruke en funksjon!


4️⃣ Praktiske Eksempler: Lage Eget Program 👨‍💻👩‍💻

Nå som vi har lært om lister, algoritmer og funksjoner, kan vi lage et enkelt program som kombinerer alt dette. La oss lage et program som:

  1. Finner gjennomsnittsalderen til en gruppe personer.
  2. Bruker en funksjon til å beregne gjennomsnittet.
  3. Bruker en 2D-liste til å lagre informasjon om hver person.
def beregn_gjennomsnitt(alder_liste):
    return sum(alder_liste) / len(alder_liste)

personer = [
    ["Ole", 30],
    ["Kari", 25],
    ["Per", 35]
]

# Hent ut alderene fra listen
aldere = [person[1] for person i personer]

# Beregn gjennomsnittsalderen
gjennomsnitt = beregn_gjennomsnitt(aldere)
print(f'Gjennomsnittsalderen er: {gjennomsnitt:.2f} år')

Dette programmet vil skrive ut:

Gjennomsnittsalderen er: 30.00 år

🧪 Test deg selv!

  1. Lag en funksjon som finner det minste tallet i en liste med tall.
  2. Lag en 2D-liste som representerer en enkel spillebrett (f.eks. sjakkbrett), og skriv ut hver rad.
  3. Bruk list comprehension til å lage en liste med tallene fra 1 til 20 som er delelige med 3.
  4. Lag et program som beregner totalprisen på varer i en handlekurv ved å bruke en funksjon.

🎓 Oppsummering:

  • Vi har sett hvordan vi kan bruke 2D-lister til å representere tabeller og matriser.
  • List comprehension gjør det enklere å lage nye lister basert på

eksisterende data, og vi kan inkludere betingelser for å filtrere elementer.

  • Vi har lært om algoritmisk tenkning, som lar oss bryte ned problemer i en sekvens av logiske trinn.
  • Funksjoner i Python lar oss gjenbruke kode og organisere programmet vårt på en effektiv måte.

Er du klar for neste modul? Vi skal dykke videre inn i funksjoner, lære om unntakshåndtering, og utforske mer avanserte datastrukturer som tupler og ordbøker! 🚀👨‍💻👩‍💻

La oss fortsette med neste del i læringsreisen! Nå skal vi utforske flere viktige konsepter som:

  1. Funksjoner i Python – hvordan vi definerer, bruker og drar nytte av funksjoner.
  2. Funksjoner og parametere – hvordan funksjoner kan kommunisere med omgivelsene gjennom parametere.
  3. Returnering av verdier fra funksjoner – hvordan vi kan hente ut resultater fra funksjoner.
  4. Funksjoner med flere parametere – hvordan vi kan skape funksjoner som tar inn flere variabler.
  5. Feilhåndtering med unntak – hvordan vi håndterer feil i Python-kode.

🐍 Python Essentials 1 – Modul 4 (Del 10): Funksjoner, Parametere og Feilhåndtering 🛠️


1️⃣ Funksjoner i Python 🛠️

En funksjon er en samling instruksjoner som utfører en spesifikk oppgave. Funksjoner gjør koden din mer organisert, lar deg gjenbruke kode og gjør programmet mer effektivt. I Python definerer vi funksjoner med def-nøkkelordet.

Hvordan definere en enkel funksjon:

def si_hei():
    print("Hei, verden!")

Her har vi laget en enkel funksjon kalt si_hei som bare skriver ut "Hei, verden!". For å kjøre funksjonen må vi kalle den:

si_hei()  # Skriver ut: Hei, verden!

2️⃣ Funksjoner med parametere 📦

Funksjoner blir mye mer nyttige når de kan motta parametere. Dette lar deg sende informasjon til funksjonen som den kan bruke til å utføre beregninger eller operasjoner.

Eksempel på funksjon med en parameter:

def si_hei(navn):
    print(f"Hei, {navn}!")

Her tar funksjonen si_hei inn en parameter kalt navn, og den bruker denne verdien når den skriver ut meldingen.

si_hei("Kari")  # Skriver ut: Hei, Kari!
si_hei("Ole")   # Skriver ut: Hei, Ole!

3️⃣ Returnere verdier fra funksjoner 🎁

En funksjon kan også returnere en verdi ved hjelp av return-nøkkelordet. Dette lar oss bruke resultatet av funksjonen i andre deler av programmet.

Eksempel på funksjon som returnerer en verdi:

def addisjon(a, b):
    return a + b

Denne funksjonen tar to parametere, a og b, og returnerer summen av dem.

resultat = addisjon(3, 4)
print(resultat)  # Skriver ut: 7

Når funksjonen returnerer en verdi, kan vi lagre den i en variabel og bruke den videre i programmet.


Hva betyr "return"? 🤔

Når vi bruker return, betyr det at funksjonen avsluttes, og verdien som følger etter return sendes tilbake til der funksjonen ble kalt. Etter return utføres ingen av de følgende linjene i funksjonen.

Tenk Etter 💡: Hva tror du skjer hvis en funksjon har flere return-setninger, men bare en av dem blir kalt? Prøv det ut!


4️⃣ Funksjoner med flere parametere 🔄

En funksjon kan ta inn flere parametere samtidig, noe som gjør den svært fleksibel. Når vi definerer en funksjon med flere parametere, skiller vi dem med komma.

Eksempel på funksjon med flere parametere:

def multiplikasjon(a, b, c):
    return a * b * c

Denne funksjonen tar tre parametere, multipliserer dem og returnerer resultatet.

resultat = multiplikasjon(2, 3, 4)
print(resultat)  # Skriver ut: 24

Standardverdier for parametere:

Hvis du ønsker at en parameter skal ha en standardverdi hvis brukeren ikke oppgir noe, kan du sette det når du definerer funksjonen.

Eksempel:

def hils(navn="verden"):
    print(f"Hei, {navn}!")

Her har parameteren navn en standardverdi på "verden". Hvis vi ikke gir noen verdi når vi kaller funksjonen, brukes standardverdien.

hils()        # Skriver ut: Hei, verden!
hils("Per")   # Skriver ut: Hei, Per!

5️⃣ Feilhåndtering med Unntak 🚨

Feilhåndtering i Python gjøres ved hjelp av try, except, og eventuelt finally. Dette lar deg fange opp feil som kan oppstå under kjøring av programmet, og gjøre noe med dem slik at programmet ikke krasjer.

Eksempel på feilhåndtering:

def divider(a, b):
    try:
        resultat = a / b
        print(f"Resultatet er: {resultat}")
    except ZeroDivisionError:
        print("Feil: Kan ikke dele på null!")

Hvis brukeren prøver å dele på null, vil except-blokken fange feilen og skrive ut en melding i stedet for at programmet krasjer.

divider(10, 2)  # Skriver ut: Resultatet er: 5.0
divider(10, 0)  # Skriver ut: Feil: Kan ikke dele på null!

Flere typer unntak:

Python har mange innebygde unntakstyper som kan fange forskjellige typer feil, som ValueError, IndexError, og mange flere.

Eksempel:

try:
    tall = int(input("Skriv inn et tall: "))
except ValueError:
    print("Feil: Du må skrive inn et gyldig tall!")

Hvis brukeren skriver inn noe som ikke kan konverteres til et heltall, fanger ValueError feilen, og vi kan vise en vennlig feilmelding.


6️⃣ Funksjoner og unntak sammen 💡

La oss lage et større program der vi bruker funksjoner og feilhåndtering sammen. Vi skal lage en enkel kalkulator som kan utføre addisjon, subtraksjon, multiplikasjon og divisjon.

def addisjon(a, b):
    return a + b

def subtraksjon(a, b):
    return a - b

def multiplikasjon(a, b):
    return a * b

def divisjon(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return "Feil: Kan ikke dele på null!"

# Hovedprogram
while True:
    try:
        a = float(input("Skriv inn første tall: "))
        b = float(input("Skriv inn andre tall: "))
    except ValueError:
        print("Feil: Du må skrive inn gyldige tall!")
        continue

    operasjon = input("Velg operasjon (+, -, *, /): ")

    if operasjon == "+":
        print(f"Resultat: {addisjon(a, b)}")
    elif operasjon == "-":
        print(f"Resultat: {subtraksjon(a, b)}")
    elif operasjon == "*":
        print(f"Resultat: {multiplikasjon(a, b)}")
    elif operasjon == "/":
        print(f"Resultat: {divisjon(a, b)}")
    else:
        print("Ugyldig operasjon!")

    fortsett = input("Vil du fortsette? (ja/nei): ")
    if fortsett.lower() != "ja":
        break

Dette programmet er en enkel kalkulator som håndterer unntak hvis brukeren prøver å dele på null eller skriver inn ugyldige tall.


🧪 Test deg selv!

  1. Lag en funksjon som beregner arealet av en sirkel gitt radius som parameter.
  2. Skriv en funksjon som tar to tall som parametere og returnerer summen hvis begge er positive. Hvis ett av tallene er negativt, returnerer funksjonen 0.
  3. Lag et program som håndterer ValueError når brukeren skriver inn tekst der det forventes tall.

🎓 Oppsummering:

  • Vi har sett hvordan vi kan definere funksjoner og bruke dem til å organisere koden vår.
  • Funksjoner kan ta inn parametere og returnere verdier ved hjelp av return.
  • Vi kan håndtere feil i Python ved å bruke try og except for å fange opp vanlige feil som kan oppstå i programmet.
  • Feilhåndtering er en viktig del av robuste programmer som kan takle uforutsette situasjoner uten å kras

je.


Neste modul vil dykke dypere inn i tupler, ordbøker, og unntak! Vi vil også se på hvordan vi kan behandle data på en mer avansert måte ved å bruke disse strukturerte dataformene. 🚀👨‍💻👩‍💻