PCEP Python‐opplæring for nybegynnere4 - itnett/FTD02H-N GitHub Wiki
Flott! Nå går vi videre til den siste delen av PCEP-opplæringen, hvor vi skal dekke feilhåndtering, filhåndtering, dypere bruk av iterators og generators, samt gå inn i avanserte Python-konsepter som list comprehensions, lambda-funksjoner, og mer. Denne delen fullfører det som er nødvendig for å mestre PCEP-sertifiseringen og gå videre til avansert bruk av Python.
💻 PE1 Avansert Python: Feilhåndtering, List Comprehensions og Lambda-funksjoner 🚀
Denne delen vil dekke avanserte konsepter som er nødvendige for å forbedre din Python-forståelse og gjøre deg klar for PCEP-sertifiseringen. Du vil lære hvordan du håndterer feil, bruke list comprehensions og lambda-funksjoner, samt dypdykke i bruk av iterators og generators.
🚨 1. Avansert Feilhåndtering i Python 🛠️
Try-Except-Else
Noen ganger ønsker du at en bestemt kodeblokk bare skal kjøre hvis det ikke oppstår noen feil. Dette kan du gjøre ved å bruke else
sammen med try-except
.
try:
tall = int(input("Skriv inn et tall: "))
resultat = 10 / tall
except ZeroDivisionError:
print("Du kan ikke dele på null!")
except ValueError:
print("Det er ikke et gyldig tall!")
else:
print(f"Resultatet er {resultat}")
- else: Denne blokken kjøres bare hvis det ikke oppstår en feil i
try
-blokken.
Try-Except-Finally
finally
-blokken kjøres alltid, uansett om det oppstår en feil eller ikke. Dette er nyttig for å rydde opp ressurser, som å lukke filer.
try:
fil = open("data.txt", "r")
innhold = fil.read()
except FileNotFoundError:
print("Filen finnes ikke!")
finally:
fil.close()
print("Filen er lukket.")
- finally: Blokken kjøres alltid, uansett om det oppstår en feil eller ikke.
🔄 2. Iterators og Generators i dybden 💡
Iterators
En iterator er et objekt som inneholder flere elementer, og du kan iterere gjennom disse ett om gangen. Du kan lage dine egne iteratorer ved å definere __iter__()
og __next__()
metoder i klassen din.
class MineTall:
def __init__(self):
self.a = 1
def __iter__(self):
return self
def __next__(self):
if self.a <= 10:
x = self.a
self.a += 1
return x
else:
raise StopIteration
tall = MineTall()
for t in tall:
print(t)
__iter__()
: Returnerer iteratoren selv.__next__()
: Returnerer neste element i sekvensen.
Generators
Generators er enkle å lage i Python ved hjelp av yield
. De fungerer som en iterator, men lar deg lage en sekvens uten å bruke så mye minne.
def mine_tall():
for i in range(1, 11):
yield i
for tall i mine_tall():
print(tall)
- yield: I motsetning til
return
, huskeryield
hvor funksjonen stoppet og fortsetter derfra neste gang.
💡 3. List Comprehensions 💻
List comprehensions er en kortere og mer lesbar måte å opprette lister på, basert på en eksisterende sekvens.
Vanlig for-løkke for å lage en liste
tall = []
for i in range(1, 6):
tall.append(i * 2)
print(tall) # [2, 4, 6, 8, 10]
List Comprehension
Dette kan skrives mer elegant ved hjelp av list comprehensions:
tall = [i * 2 for i in range(1, 6)]
print(tall) # [2, 4, 6, 8, 10]
- Dette gjør det samme som eksempelet ovenfor, men på én linje.
Med betingelse
Du kan også legge til en betingelse i list comprehensions.
tall = [i for i in range(1, 11) if i % 2 == 0]
print(tall) # [2, 4, 6, 8, 10]
- Her legges bare partall til i listen.
⚡ 4. Lambda-funksjoner 💡
Lambda-funksjoner er anonyme, enlinjes funksjoner som du kan bruke når du ikke trenger å definere en full funksjon.
Vanlig funksjon
def kvadrat(x):
return x * x
print(kvadrat(5)) # 25
Lambda-funksjon
Dette kan skrives med en lambda-funksjon:
kvadrat = lambda x: x * x
print(kvadrat(5)) # 25
- lambda: En kortere måte å definere en funksjon på, uten
def
-nøkkelordet. - Lambda-funksjoner er ofte brukt i sammenheng med funksjoner som tar andre funksjoner som argumenter, som
map()
ellerfilter()
.
map()
Eksempel med tall = [1, 2, 3, 4]
kvadrater = list(map(lambda x: x * x, tall))
print(kvadrater) # [1, 4, 9, 16]
filter()
Eksempel med tall = [1, 2, 3, 4, 5, 6]
partall = list(filter(lambda x: x % 2 == 0, tall))
print(partall) # [2, 4, 6]
- map(): Anvender en funksjon på hvert element i en sekvens.
- filter(): Filtrerer elementene basert på en betingelse.
🧠 5. Dypdykk i Filhåndtering 📁
Python gir deg verktøy for å lese, skrive og håndtere filer på en effektiv måte. Dette er spesielt nyttig når du vil lagre data eller lese inn data fra filer.
Lese fra en fil
Du kan lese hele innholdet av en fil med read()
eller lese linje for linje med readline()
.
with open("minfil.txt", "r") as fil:
innhold = fil.read()
print(innhold)
read()
: Leser hele innholdet av filen som en streng.
Skrive til en fil
For å skrive til en fil kan du bruke write()
. Hvis filen allerede eksisterer, vil innholdet bli overskrevet.
with open("minfil.txt", "w") as fil:
fil.write("Dette er en testlinje.")
write()
: Skriver tekst til filen. Husk at du må åpne filen i "w" (write) eller "a" (append)-modus for å kunne skrive.
Appending til en fil
Hvis du ønsker å legge til innhold uten å overskrive, kan du bruke modusen "a"
(append).
with open("minfil.txt", "a") as fil:
fil.write("\nDette er en ekstra linje.")
📚 6. Praktiske oppgaver 🎯
filter()
Oppgave 1: Lambda-funksjon med Skriv en lambda-funksjon som filtrerer ut alle oddetall fra en liste med tall.
tall = [1, 2, 3, 4, 5, 6, 7, 8]
partall = list(filter(lambda x: x % 2 == 0, tall))
print(partall) # [2, 4, 6, 8]
Oppgave 2: List Comprehensions med betingelse
Skriv en list comprehension som lager en liste med kvadrater av tallene fra 1 til 10, men bare for partall.
kvadrater = [i * i for i in range(1, 11) if i % 2 == 0]
print(kvadrater) # [4, 16, 36, 64, 100]
Oppgave 3: Lag en generator for å telle opp til 5
Lag en generator som teller fra 1 til 5 og skriver ut hvert tall.
def tell():
for i in range(1, 6):
yield i
for nummer i tell():
print(nummer)
🎓 7. Oppsummering og Klar for Eksamen! 🏆
Du har nå dekket alle nødvendige konsepter for å mestre PCEP-sert
ifiseringen, inkludert:
- Avansert feilhåndtering
- Iterators og generators
- List comprehensions
- Lambda-funksjoner
- Dypdykk i filhåndtering
Fortsett å øve på praktiske oppgaver, og gå tilbake til konsepter du finner vanskelige. Husk at Python er et språk hvor øvelse gjør mester, og jo mer du koder, jo mer komfortabel blir du!
Lykke til med PCEP, og husk at jeg alltid er her hvis du trenger hjelp eller flere utfordringer! 🚀