Lær deg Python_2 - itnett/FTD02H-N GitHub Wiki
Dykking dypere inn i Python 🐍
Nå som vi har fått en oversikt over emnene, la oss utforske hvert område mer detaljert med praktiske eksempler og tips.
Programstrukturer 🏗️
Variabler og datatyper
Eksempel:
# Heltall (int)
alder = 25
# Flyttall (float)
pi = 3.14
# Streng (string)
navn = "Ola Nordmann"
# Boolsk (bool)
er_student = True
Tips:
- Variabelnavn bør være beskrivende og følge en konsistent navngivningskonvensjon.
 - Bruk kommentarer (
#) for å forklare koden din. 
Kontrollstrukturer
If-setninger:
if alder >= 18:
    print("Du er myndig.")
else:
    print("Du er ikke myndig.")
Tips:
- Indentering er viktig i Python; sørg for å bruke fire mellomrom eller én tab.
 - Bruk logiske operatorer (
and,or,not) for komplekse betingelser. 
Løkker
For-løkke:
for i in range(5):
    print(f"Tallet er {i}")
While-løkke:
tall = 0
while tall < 5:
    print(f"Tallet er {tall}")
    tall += 1
Tips:
range()genererer en sekvens av tall.- Pass på å unngå uendelige løkker ved å oppdatere løkkekontrollen riktig.
 
Datastrukturer 📊
Lister
Eksempel:
frukt = ["eple", "banan", "appelsin"]
frukt.append("druer")
print(frukt)
Tips:
- Lister er mutable; du kan legge til, fjerne og endre elementer.
 - Iterer over lister med løkker for å behandle elementene.
 
Tupler
Eksempel:
koordinater = (10, 20)
print(koordinater[0])
Tips:
- Tupler er immutable; bruk dem for data som ikke skal endres.
 - Kan brukes som nøkler i ordbøker hvis de inneholder immutable objekter.
 
Sett
Eksempel:
unikke_tall = {1, 2, 3, 2, 1}
print(unikke_tall)  # Output: {1, 2, 3}
Tips:
- Sett brukes for å lagre unike elementer.
 - Effektive for medlemskapstesting (
in-operatoren). 
Ordbøker
Eksempel:
student = {"navn": "Kari", "alder": 22, "studie": "Informatikk"}
print(student["navn"])
Tips:
- Nøklene i en ordbok må være immutable (f.eks. strenger, tall, tupler).
 - Bruk 
.items(),.keys(), og.values()for å iterere over ordbøker. 
Funksjoner og metoder 🔧
Definere funksjoner
Eksempel:
def hils(navn):
    return f"Hei, {navn}!"
print(hils("Per"))
Tips:
- Bruk meningsfulle funksjonsnavn som beskriver hva funksjonen gjør.
 - Dokumenter funksjoner med docstrings.
 
Parameteroverføring
Eksempel:
def legg_til(a, b=0):
    return a + b
print(legg_til(5))       # Output: 5
print(legg_til(5, 3))    # Output: 8
Tips:
- Standardparameterverdier gjør funksjoner mer fleksible.
 - Bruk 
*argsog**kwargsfor variabelt antall argumenter. 
Objektorientert programmering 🧩
Klasser og objekter
Eksempel:
class Bil:
    def __init__(self, merke, modell):
        self.merke = merke
        self.modell = modell
    def kjør(self):
        print(f"{self.merke} {self.modell} kjører.")
bil1 = Bil("Toyota", "Corolla")
bil1.kjør()
Tips:
__init__er konstruktøren som initialiserer objekter.selfrefererer til instansen av klassen.
Arv
Eksempel:
class ElBil(Bil):
    def lad(self):
        print(f"{self.merke} {self.modell} lader.")
elbil = ElBil("Tesla", "Model S")
elbil.kjør()
elbil.lad()
Tips:
- Arv lar deg gjenbruke kode og utvide funksjonalitet.
 - Bruk 
super()for å kalle metoder fra foreldresklassen. 
Debugging, testing og unntaksbehandling 🐞
Unntaksbehandling
Eksempel:
try:
    resultat = 10 / 0
except ZeroDivisionError:
    print("Kan ikke dele med null!")
finally:
    print("Ferdig.")
Tips:
- Håndter spesifikke unntak for bedre feilhåndtering.
 finally-blokken kjører alltid, uansett om det oppstår et unntak eller ikke.
Testing med unittest
Eksempel:
import unittest
def legg_til(a, b):
    return a + b
class TestMatte(unittest.TestCase):
    def test_legg_til(self):
        self.assertEqual(legg_til(2, 3), 5)
if __name__ == '__main__':
    unittest.main()
Tips:
- Skrive tester sikrer at koden din fungerer som forventet.
 - Kjør testene ofte for å fange opp feil tidlig.
 
API 🔌
Bruke requests-biblioteket
Eksempel:
import requests
response = requests.get("https://api.github.com")
if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print("Feil ved henting av data.")
Tips:
- Kontroller alltid HTTP-statuskoden for å sikre vellykket forespørsel.
 - Håndter nettverksunntak med 
tryogexcept. 
GUI 🖥️
Lage et enkelt vindu med Tkinter
Eksempel:
import tkinter as tk
root = tk.Tk()
root.title("Mitt første GUI")
label = tk.Label(root, text="Hei, verden!")
label.pack()
root.mainloop()
Tips:
- GUI-programmering er hendelsesdrevet; forstå hendelsesløkken.
 - Organiser widgets med layouts som 
pack(),grid(), ogplace(). 
UML 📈
Klassediagram
- Bruk UML-klassediagrammer for å planlegge klasser og deres relasjoner.
 - Vis attributter, metoder, og arvforhold.
 
Eksempel:
+------------------+
|      Bil         |
+------------------+
| - merke          |
| - modell         |
+------------------+
| + kjør()         |
+------------------+
          ^
          |
+------------------+
|     ElBil        |
+------------------+
| + lad()          |
+------------------+
Tips:
- Bruk verktøy som draw.io eller Lucidchart for å tegne UML-diagrammer.
 - UML hjelper med å visualisere programstrukturen før koding.
 
Filbehandling 📁
Lese og skrive filer
Eksempel:
# Skrive til en fil
with open("test.txt", "w") as fil:
    fil.write("Dette er en test.\n")
# Lese fra en fil
with open("test.txt", "r") as fil:
    innhold = fil.read()
    print(innhold)
Tips:
- Bruk 
with-setningen for å sikre at filer lukkes riktig. - Håndter unntak ved filtilgang, som 
FileNotFoundError. 
Datasikkerhet 🔒
Input-validering
Eksempel:
bruker_input = input("Skriv inn et tall: ")
try:
    tall = int(bruker_input)
except ValueError:
    print("Vennligst skriv inn et gyldig tall.")
Tips:
- Aldri stol på brukerinput; valider og sanitér alltid data.
 - Beskytt applikasjonen mot vanlige angrep som SQL-injeksjon og XSS.
 
Kryptering
Eksempel med hashlib:
import hashlib
passord = "mitthemmeligePassord"
hash_object = hashlib.sha256(passord.encode())
hex_dig = hash_object.hexdigest()
print(hex_dig)
Tips:
- Lagre aldri passord i klartekst.
 - Bruk sikre algoritmer og biblioteker for kryptering og hashing.
 
Neste steg 🚶♂️
For å styrke din forståelse, prøv å implementere små programmer som bruker disse konseptene. Her er noen forslag:
- Lag et program som administrerer en liste over gjøremål ved hjelp av lister og ordbøker.
 - Bygg en enkel kalkulator som bruker funksjoner for hver operasjon.
 - Opprett en klasse for en bankkonto som kan sette inn og ta ut penger, og håndter unntak for overtrekk.
 
Ressurser 📚
- Offisiell Python-dokumentasjon: docs.python.org
 - W3Schools Python Tutorial: w3schools.com/python/
 - Python for Everybody (gratis e-bok): py4e.com
 
Avsluttende ord 🎉
Å lære programmering er en kontinuerlig prosess. Fortsett å eksperimentere, lese og skrive kode. Ikke vær redd for å feile; hver feil er en mulighet til å lære noe nytt. Lykke til på din programmeringsreise! 🚀