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 *args og **kwargs for 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.
  • self refererer 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 try og except.

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(), og place().

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 📚

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