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

La oss bygge videre på kunnskapen din og gå gjennom alle emnene du nevnte, ett etter ett, med enkel, intuitiv og barnevennlig forklaring. Jeg skal forklare det grunnleggende så klart som mulig, slik at alt blir logisk. Og vi skal teste og eksemplifisere hver eneste del, slik at du forstår hvordan og hvorfor ting fungerer!


🐍 Python Essentials 1 – Modul for Modul 🎓

🌟 Modul 1: Introduksjon til Python og Programmering

Hva er programmering? 💻

  • Programmering er som å lage en oppskrift for datamaskiner. Vi forteller datamaskinen hva den skal gjøre, og den følger instruksjonene våre steg for steg.

Python? 🐍

  • Python er et av de enkleste programmeringsspråkene å lære. Det er som å snakke til datamaskinen med engelskaktige setninger. For eksempel:
print("Hei, verden!")  # Dette skriver ut "Hei, verden!" på skjermen.

Tenk etter: Hva tror du skjer om du endrer "Hei, verden!" til "Hvordan har du det?"?

🚀 Øvelse:

  1. Skriv et program som sier "Jeg liker å lære Python!"
  2. Hva skjer hvis du endrer meldingen?

🖥️ Modul 2: Python Datatyper, Variabler, Operatører, og Inn-/Utdata Operasjoner

Variabler og Data 🎒

En variabel er som en boks der vi kan lagre ting. Vi kan gi boksen et navn, som alder, og legge et tall inni den:

alder = 12  # Lagre 12 i "alder"

Nå kan vi bruke variabelen til å skrive ut alderen:

print(alder)  # Skriver ut: 12

Tenke-etter: Hva skjer hvis du prøver å legge inn "12 år" i stedet for tallet 12?

Datatyper 🔢

  • Heltall (int): Tallet 12.
  • Flyttall (float): Tall med komma, f.eks. 12.5.
  • Tekst (str): "Hei der!"

Tenk etter: Hva tror du skjer hvis du prøver å gjøre matte med tekst? F.eks. "Hei" + 5?

Operatører ➕➖

  • Vi kan gjøre matte i Python med operatører:
    • + for pluss
    • - for minus
    • * for gange
    • / for deling

Eksempel:

resultat = 3 + 5
print(resultat)  # Skriver ut: 8

Tenke-etter: Hva skjer hvis du bytter + med * i eksempelet over?


Inn-/Utdata Operasjoner 🗣️🖥️

  • input() brukes for å spørre brukeren om noe. For eksempel:
navn = input("Hva heter du?\n")
print("Hei, " + navn + "!")
  • print() brukes for å vise noe på skjermen.

Øvelse:

  1. Lag et program som spør brukeren om alderen deres og deretter skriver det ut.

🧠 Modul 3: Boolske Verdier, Hvis-setninger, Løkker, og Lister

Boolske Verdier og Betingelser ✅❌

  • En boolsk verdi kan være enten True (sant) eller False (usant).

Hvis-setninger brukes for å ta beslutninger:

alder = 12
if alder >= 18:
    print("Du er voksen!")
else:
    print("Du er fortsatt et barn!")

Tenk etter: Hva tror du skjer hvis alder er lik 20?

Løkker 🔁

Løkker lar oss gjenta kode mange ganger uten å skrive den på nytt.

For-løkker:

for i in range(5):  # Teller fra 0 til 4
    print(i)

While-løkker:

teller = 0
while teller < 5:
    print(teller)
    teller += 1  # Øk tallet med 1

Tenk-etter: Hva tror du skjer hvis du fjerner teller += 1?


Lister 📋

En liste er som en samling av ting, som f.eks. en handleliste:

frukter = ["eple", "banan", "appelsin"]

Vi kan hente ut elementer fra listen:

print(frukter[0])  # Skriver ut: eple

🛠️ Modul 4: Funksjoner, Tupler, Ordbøker og Feilhåndtering

Funksjoner 📑

En funksjon er som en oppskrift – den tar inn noe, gjør noe med det, og returnerer et resultat.

def si_hei(navn):
    print("Hei " + navn + "!")

si_hei("Lise")

Feilhåndtering 🛑

Noen ganger gjør vi feil, og da kan vi bruke try-except for å håndtere dem uten at programmet krasjer:

try:
    alder = int(input("Skriv inn alderen din: "))
except ValueError:
    print("Det var ikke et gyldig tall!")

💪 Nå er det din tur å øve!

  1. Lag en enkel lånekalkulator som bruker det du har lært:

    • Spør brukeren hvor mye de låner.
    • Spør om årlig rente.
    • Regn ut månedlig beløp de må betale.
  2. Test funksjonene dine:

    • Hva skjer hvis brukeren skriver inn noe som ikke er et tall?
    • Hvordan kan du gjøre programmet mer brukervennlig?

🎓 Oppsummering

  • Variabler lagrer data.
  • Løkker gjentar kode.
  • Funksjoner organiserer kode.
  • Try-except håndterer feil.
  • Lister og tupler lagrer flere verdier.

Er du klar for neste steg? 🎉

Supert! Nå skal vi bygge videre på det du har lært og dykke dypere inn i Modul 3: Logikk og bit-operasjoner, lister, og mer avanserte operasjoner. Vi skal fortsatt forklare alt fra bunnen av, med eksempler, testing, og enkle forklaringer. La oss begynne!


🐍 Python Essentials 1 – Modul 3: Logikk, Lister, og Avanserte Operasjoner 🎓

1️⃣ Logiske Operasjoner i Python 🔍

Hva er logiske operasjoner? 🤔

Logiske operasjoner handler om å evaluere uttrykk som enten sant eller usant. Vi bruker dem til å sjekke forhold mellom verdier, for eksempel:

  • AND (og): Begge må være sanne for at det totale uttrykket skal være sant.
  • OR (eller): Minst én må være sann for at uttrykket skal være sant.
  • NOT (ikke): Snur resultatet – hvis noe er sant, blir det usant, og omvendt.

Eksempler på logiske operasjoner:

x = 5
y = 10

print(x > 2 and y < 15)  # Begge er sanne, så vi får True.
print(x > 7 or y == 10)  # Én er sann, så vi får True.
print(not(x == 5))       # Dette snur det til False, fordi x er faktisk 5.

Tenke-etter: Hva tror du skjer om vi endrer til print(x > 10 and y == 10)? Prøv selv!


2️⃣ Bitwise Operasjoner 💡

Hva er bitwise operasjoner? 🧠

Bitwise operasjoner arbeider på bit-nivå, noe som betyr at vi sammenligner tall bit for bit. Dette er avansert, men nyttig i mange programmeringssituasjoner.

De vanligste operasjonene er:

  • & (AND): Setter 1 der begge biter er 1.
  • | (OR): Setter 1 der minst én av bitene er 1.
  • ^ (XOR): Setter 1 der kun én av bitene er 1.
  • ~ (NOT): Snur alle bitene (1 blir 0 og 0 blir 1).
  • << (Venstreskift): Flytter bitene til venstre.
  • >> (Høyreskift): Flytter bitene til høyre.

Eksempel:

x = 5   # 0101 i binær
y = 3   # 0011 i binær

print(x & y)  # 0001 = 1
print(x | y)  # 0111 = 7
print(x ^ y)  # 0110 = 6

3️⃣ Lister og Listebehandling 📋

Lister er en måte å lagre flere verdier på ett sted. Tenk på det som en handleliste: du kan lagre alle varene dine i en liste og hente dem senere.

Lage og hente fra lister:

frukter = ["eple", "banan", "appelsin"]
print(frukter[0])  # Skriver ut "eple"

Merk: Vi starter med å telle fra 0 i programmering!

Endre lister:

Vi kan endre elementene i en liste, legge til nye, eller fjerne gamle.

frukter[1] = "pære"   # Endrer "banan" til "pære"
frukter.append("druer")  # Legger til "druer" på slutten av listen

Tenk etter: Hva tror du skjer om vi skriver frukter.pop()? (Hint: Vi fjerner det siste elementet).

🛠️ Listefunksjoner:

Python har mange funksjoner som hjelper deg med å håndtere lister:

  • len() – Finn lengden på listen.
  • sorted() – Sorter listen i rekkefølge.
  • reverse() – Snu rekkefølgen på listen.

Eksempel:

tall = [3, 1, 4, 1, 5, 9]
print(sorted(tall))   # Skriver ut: [1, 1, 3, 4, 5, 9]

4️⃣ Avansert listebehandling: Boblesortering 🧠

Hva er boblesortering? 🤔

Boblesortering er en enkel algoritme som sorterer en liste ved å sammenligne to og to elementer og bytte dem hvis de er i feil rekkefølge. Vi "bobler" de største elementene til toppen.

Eksempel på boblesortering:

tall = [64, 25, 12, 22, 11]

for i in range(len(tall)):
    for j in range(0, len(tall) - i - 1):
        if tall[j] > tall[j + 1]:
            tall[j], tall[j + 1] = tall[j + 1], tall[j]  # Bytt plass

Tenk etter: Hva tror du skjer hvis du prøver dette med en liste som allerede er sortert?


5️⃣ Operasjoner på lister: Slice, Kopiere og Flere funksjoner ✂️📋

Slice (kutte opp lister):

Vi kan hente deler av en liste ved å bruke slice. Dette er som å klippe ut en bit av listen.

tall = [0, 1, 2, 3, 4, 5]
print(tall[1:4])  # Skriver ut: [1, 2, 3]

Kopiere lister:

Hvis vi vil kopiere en liste, kan vi bruke copy().

kopi = tall.copy()

6️⃣ Logiske operasjoner på lister 🔍

Vi kan også bruke logiske operasjoner på lister for å søke etter bestemte verdier eller sammenligne lister.

Eksempel:

frukter = ["eple", "banan", "appelsin"]
if "eple" in frukter:
    print("Eple er i listen!")

🧪 Test deg selv!

  1. Lag en liste over favorittfilmene dine og skriv ut dem en etter en.
  2. Sorter listen din alfabetisk.
  3. Sjekk om en bestemt film er i listen ved hjelp av en if-setning.

🎓 Oppsummering:

  • Vi har lært om logiske operasjoner som AND, OR, NOT.
  • Vi har utforsket bitwise operasjoner som & og |.
  • Vi har gått dypt inn i lister, hvordan lage, hente, endre, og sortere dem.
  • Vi har også sett på hvordan du kan bruke boblesortering for å sortere lister.

Neste steg? Fortsett å leke med lister, lag funksjoner som kan jobbe med dem, og bli trygg på å bruke disse verktøyene i Python! 🚀

La oss gå videre og dykke inn i funksjoner, tupler, ordbøker (dictionaries), og unntakshåndtering i Python! 🎓 Dette er noen av de mest nyttige og kraftfulle verktøyene du kan bruke for å organisere koden din, håndtere spesifikke situasjoner og lagre informasjon på en strukturert måte.


🐍 Python Essentials 1 – Modul 4: Funksjoner, Tupler, Ordbøker, og Unntakshåndtering 🛠️


1️⃣ Funksjoner i Python 📦

Hva er en funksjon? 🤔

En funksjon er en gjenbrukbar blokk med kode som utfører en spesifikk oppgave. Du kan tenke på det som en maskin: du gir den input (data), den utfører noe arbeid, og gir deg et output (resultat). Dette hjelper deg med å organisere koden og unngå å skrive samme kode flere ganger.

Hvordan definere en funksjon:

Du lager en funksjon ved å bruke nøkkelordet def, etterfulgt av funksjonsnavnet og eventuelle parametere (input). Her er en enkel funksjon som skriver ut "Hei, verden!":

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

For å kalle på (bruke) funksjonen, skriver du bare:

si_hei()  # Dette vil skrive ut "Hei, verden!"

Funksjoner med parametere:

Noen ganger vil du at en funksjon skal jobbe med forskjellige data. Da kan du legge til parametere som input.

def si_hei(navn):
    print("Hei, " + navn + "!")

Nå kan du bruke forskjellige navn når du kaller funksjonen:

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

2️⃣ Hvordan Funksjoner Kommuniserer med Omgivelsene 🔄

Returnere verdier:

Funksjoner kan også returnere verdier, slik at du kan bruke resultatet senere i programmet. Du bruker nøkkelordet return for å sende tilbake en verdi fra funksjonen.

Eksempel:

def kvadrat(x):
    return x * x

resultat = kvadrat(4)  # resultat vil være 16
print(resultat)

Flere parametere:

Funksjoner kan ta flere parametere for å utføre mer komplekse oppgaver:

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

print(legg_sammen(3, 5))  # Skriver ut: 8

3️⃣ Tupler 🎯

Hva er en tuppel? 🤔

En tuppel er som en liste, men den kan ikke endres. Når du har opprettet en tuppel, kan du ikke legge til, fjerne eller endre elementene. Den er immutable (uforanderlig).

Du lager en tuppel ved å bruke vanlige parenteser () i stedet for firkantparanteser [] som vi bruker for lister.

Eksempel:

person = ("Ole", 25, "Bergen")
print(person[0])  # Skriver ut: Ole

Her har vi en tuppel med tre elementer: navn, alder, og by. Vi kan hente ut data fra tuppelen på samme måte som en liste, men vi kan ikke endre den.

Hvorfor bruke tupler? 🤔

Tupler er nyttige når du vil at dataene dine skal være uforanderlige, som for eksempel koordinater (x, y) eller en samling med konstanter.


4️⃣ Ordbøker (Dictionaries) 📚

Hva er en ordbok? 🤔

En ordbok er en datastruktur som lagrer data i form av nøkkel-verdi-par. Tenk på det som en ordbok der du slår opp et ord (nøkkel) og får definisjonen (verdi).

Eksempel på en ordbok:

person = {
    "navn": "Kari",
    "alder": 30,
    "by": "Oslo"
}

print(person["navn"])  # Skriver ut: Kari

Her har vi en ordbok som lagrer informasjon om en person. Du kan hente data fra ordboken ved å bruke nøkkelen.

Legge til, endre og fjerne elementer i en ordbok:

person["yrke"] = "Ingeniør"    # Legger til en ny nøkkel-verdi-par
person["alder"] = 31           # Endrer verdien til nøkkelen "alder"
del person["by"]               # Fjerner nøkkelen "by"

Hvorfor bruke ordbøker?

Ordbøker er ideelle når du vil lagre data som kan beskrives ved nøkkel-verdi-par, som for eksempel informasjon om personer, produkter eller innstillinger i et program.


5️⃣ Unntakshåndtering 🚨

Hva er unntakshåndtering? 🤔

I programmering oppstår det noen ganger feil, for eksempel når brukeren skriver inn noe galt, eller når programmet prøver å dele på null. Unntakshåndtering lar oss fange opp slike feil og håndtere dem på en kontrollert måte, uten at programmet krasjer.

Vi bruker try og except for å håndtere feil i Python.

Eksempel:

try:
    tall = int(input("Skriv inn et tall: "))
    resultat = 10 / tall
    print("Resultatet er", resultat)
except ZeroDivisionError:
    print("Du kan ikke dele på null!")
except ValueError:
    print("Dette er ikke et gyldig tall!")

I dette eksempelet håndterer vi to forskjellige typer feil:

  • ZeroDivisionError – Feil som oppstår når du prøver å dele med 0.
  • ValueError – Feil som oppstår når brukeren ikke skriver inn et gyldig tall.

🧪 Test deg selv!

  1. Lag en funksjon som tar to tall som parametere og returnerer summen av dem.
  2. Lag en tuppel som inneholder tre forskjellige farger og skriv ut den andre fargen.
  3. Lag en ordbok med informasjon om en bok (tittel, forfatter, år) og skriv ut forfatterens navn.
  4. Lag et program som håndterer unntaket når brukeren prøver å dele et tall med null.

🎓 Oppsummering:

  • Du har lært hva funksjoner er, hvordan de tar input og returnerer verdier.
  • Du har sett hvordan tupler brukes til å lagre data som ikke kan endres.
  • Du har lært hvordan ordbøker fungerer med nøkkel-verdi-par for å lagre informasjon på en strukturert måte.
  • Du har sett hvordan du kan bruke unntakshåndtering for å håndtere feil i programmet ditt uten å krasje.

Neste steg? Fortsett å utforske funksjoner og unntak, lag programmer som bruker tupler og ordbøker, og eksperimenter med nye måter å håndtere feil i koden din! 🚀👨‍💻👩‍💻

La oss gå videre med flere avanserte konsepter innen Python-programmering! Nå skal vi dekke noen svært nyttige emner som:

  1. Flere parametere i funksjoner
  2. Mer om Tupler og Ordbøker
  3. Dypdykk i unntakshåndtering og feilhåndtering

🐍 Python Essentials 1 – Modul 4 (Del 2): Avanserte Funksjoner, Tupler, Ordbøker, og Unntakshåndtering 🛠️


1️⃣ Flere parametere i funksjoner 📝

Hva er det?

I tidligere eksempler har vi sett funksjoner med ett eller to parametere, men hva hvis vi vil at en funksjon skal kunne ta imot et ubegrenset antall verdier? Det er her *args og **kwargs kommer inn i bildet. Dette lar deg skrive funksjoner som kan ta imot et varierende antall argumenter.

*args – Ubegrenset antall parametere:

*args lar deg sende et ubegrenset antall argumenter til en funksjon. Disse argumentene blir behandlet som en tuppel.

Eksempel:

def legg_sammen(*args):
    resultat = 0
    for nummer in args:
        resultat += nummer
    return resultat

print(legg_sammen(1, 2, 3))  # Skriver ut: 6
print(legg_sammen(5, 10))    # Skriver ut: 15

Her kan du sende så mange tall du vil til funksjonen legg_sammen, og den vil summere dem alle.

**kwargs – Navngitte argumenter:

**kwargs lar deg sende inn et ubegrenset antall navngitte argumenter til en funksjon. Disse blir behandlet som en ordbok (dictionary).

Eksempel:

def vis_informasjon(**kwargs):
    for nøkkel, verdi in kwargs.items():
        print(f'{nøkkel}: {verdi}')

vis_informasjon(navn="Ole", alder=25, by="Oslo")
# Skriver ut:
# navn: Ole
# alder: 25
# by: Oslo

kwargs kan være nyttig når du ikke vet på forhånd hvilke argumenter brukeren vil sende til funksjonen.


2️⃣ Mer om Tupler og Ordbøker 🔗

Tupler:

En tuppel er fortsatt uforanderlig, men hva om du vil returnere flere verdier fra en funksjon? Dette kan gjøres ved å returnere en tuppel!

Eksempel:

def få_navn_alder():
    navn = "Kari"
    alder = 28
    return navn, alder  # Returnerer en tuppel

resultat = få_navn_alder()
print(resultat)  # Skriver ut: ('Kari', 28)

Når du returnerer flere verdier fra en funksjon, vil Python automatisk sette disse verdiene i en tuppel.

Ordbøker:

Ordbøker kan bli veldig store og komplekse. Derfor kan du bruke innebygde Python-metoder som get(), keys(), values(), og items() for å hente informasjon mer effektivt.

Eksempel:

person = {
    "navn": "Per",
    "alder": 35,
    "yrke": "Lærer"
}

# Hente verdier:
print(person.get("alder"))  # Skriver ut: 35

# Hente alle nøkler:
print(person.keys())  # Skriver ut: dict_keys(['navn', 'alder', 'yrke'])

# Hente alle verdier:
print(person.values())  # Skriver ut: dict_values(['Per', 35, 'Lærer'])

Dette gjør det enklere å jobbe med store ordbøker.


3️⃣ Unntakshåndtering ⚠️

Avansert Unntakshåndtering:

Tidligere lærte vi om enkel unntakshåndtering med try og except, men Python lar deg håndtere flere typer feil i samme blokken, og også kjøre kode uansett om det oppstod en feil eller ikke.

Flere typer unntak:

Du kan spesifisere flere typer unntak i samme kodeblokk. Her er et eksempel der vi håndterer både deling med null og feil ved konvertering av tekst til tall:

try:
    nummer = int(input("Skriv inn et tall: "))
    resultat = 100 / nummer
    print(resultat)
except ZeroDivisionError:
    print("Feil: Du kan ikke dele på null!")
except ValueError:
    print("Feil: Du må skrive inn et tall!")

finally-blokken:

Hvis du vil at noe skal kjøres uansett om det oppstod en feil eller ikke, kan du bruke en finally-blokk.

try:
    fil = open('fil.txt', 'r')
    innhold = fil.read()
except FileNotFoundError:
    print("Filen finnes ikke.")
finally:
    print("Dette vil alltid bli skrevet ut.")

🧪 Test deg selv!

  1. Lag en funksjon som tar inn et ubegrenset antall tall og returnerer gjennomsnittet av dem.
  2. Bruk en ordbok til å lagre informasjon om favorittfilmene dine (tittel, regissør, år), og skriv ut informasjonen.
  3. Lag et program som håndterer en ValueError og en FileNotFoundError i samme try-blokk.

🎓 Oppsummering:

  • Funksjoner kan ta et ubegrenset antall argumenter ved hjelp av *args og **kwargs.
  • Tupler kan brukes til å returnere flere verdier fra en funksjon.
  • Ordbøker er ekstremt fleksible og har nyttige innebygde metoder som get(), keys(), og values().
  • Unntakshåndtering kan bli avansert med støtte for flere typer unntak, og en finally-blokk lar deg kjøre kode uansett om det oppstår en feil eller ikke.

Med denne kunnskapen kan du nå skrive mer robuste, fleksible, og kraftige Python-programmer! 🚀👨‍💻👩‍💻


Er du klar for neste modul? Dette vil inkludere mer om feilhåndtering og introduksjon til datahåndtering!