PythonPodcast 52 - itnett/FTD02H-N GitHub Wiki
Python Symboler og Konsepter forklart i detalj – Del 7 🌟
Velkommen tilbake til del 7 av vår Python-serie! I denne delen skal vi fortsette å utforske avanserte emner som algoritmer, grafisk brukergrensesnitt (GUI) med Python, og grunnleggende sikkerhetstiltak i programmering. Vi kommer også til å dekke mer om hvordan man kan strukturere koden for bedre skalerbarhet og lesbarhet.
🛠️ Symboler og konsepter i Python – Del 7
lambda
(Anonyme funksjoner)
➡️ Norsk:lambda
brukes for å lage små, anonyme funksjoner som ofte brukes for kortvarige operasjoner.
➡️ Engelsk:lambda
is used to create small, anonymous functions that are often used for temporary operations.
# Funksjon som legger til 10
legg_til_10 = lambda x: x + 10
print(legg_til_10(5)) # Output: 15
- Rekursjon
➡️ Norsk: Rekursjon er når en funksjon kaller seg selv. Dette kan være nyttig for å løse problemer som kan deles opp i mindre underproblemer, som for eksempel faktorisering.
➡️ Engelsk: Recursion is when a function calls itself. This can be useful for solving problems that can be broken down into smaller subproblems, such as factorials.
def faktorielle(n):
if n == 1:
return 1
else:
return n * faktorielle(n - 1)
print(faktorielle(5)) # Output: 120
- Algoritmer (Grunnleggende sorteringsalgoritmer)
➡️ Norsk: En algoritme er en oppskrift eller en prosess som brukes for å løse et problem. En grunnleggende sorteringsalgoritme er "bubblesort", som sorterer en liste ved å sammenligne og bytte elementer.
➡️ Engelsk: An algorithm is a recipe or process used to solve a problem. A basic sorting algorithm is "bubblesort," which sorts a list by comparing and swapping elements.
def bubblesort(liste):
for i in range(len(liste)):
for j in range(0, len(liste) - i - 1):
if liste[j] > liste[j + 1]:
liste[j], liste[j + 1] = liste[j + 1], liste[j]
return liste
print(bubblesort([64, 34, 25, 12, 22, 11, 90]))
# Output: [11, 12, 22, 25, 34, 64, 90]
🎨 Grafisk Brukergrensesnitt (GUI)
- Tkinter (GUI-programmering i Python)
➡️ Norsk:Tkinter
er en standardbibliotek i Python som lar deg lage enkle grafiske brukergrensesnitt (GUI). Dette gjør det mulig for brukere å samhandle med programmet via vinduer og knapper.
➡️ Engelsk:Tkinter
is a standard library in Python that allows you to create simple graphical user interfaces (GUIs). This enables users to interact with the program via windows and buttons.
import tkinter as tk
def klikk_knapp():
print("Knappen ble klikket!")
vindu = tk.Tk()
knapp = tk.Button(vindu, text="Klikk her", command=klikk_knapp)
knapp.pack()
vindu.mainloop() # Starter GUI-vinduet
- Canvas (Tegneflater i Tkinter)
➡️ Norsk: I Tkinter kan vi brukeCanvas
-widgeten til å tegne objekter som linjer, sirkler og rektangler. Dette er nyttig for å lage visuelle elementer i et program.
➡️ Engelsk: In Tkinter, we can use theCanvas
widget to draw objects such as lines, circles, and rectangles. This is useful for creating visual elements in a program.
import tkinter as tk
vindu = tk.Tk()
lerret = tk.Canvas(vindu, width=200, height=100)
lerret.pack()
# Tegn en linje fra (0,0) til (200, 100)
lerret.create_line(0, 0, 200, 100)
vindu.mainloop()
- Filbehandling med GUI
➡️ Norsk: MedTkinter
kan du også la brukere velge filer via en filvelger-dialog. Dette gjør det enkelt å jobbe med filer i GUI-programmer.
➡️ Engelsk: WithTkinter
, you can also allow users to choose files via a file picker dialog. This makes it easy to work with files in GUI programs.
from tkinter import filedialog
from tkinter import *
rot = Tk()
rot.filename = filedialog.askopenfilename(initialdir="/", title="Velg fil")
print("Filen du valgte:", rot.filename)
🔒 Sikkerhet og Feilhåndtering
- Input Validering
➡️ Norsk: Input validering er kritisk for sikkerhet. Ved å validere input kan vi hindre brukere fra å sende ondsinnede data inn i programmet vårt.
➡️ Engelsk: Input validation is critical for security. By validating input, we can prevent users from sending malicious data into our program.
alder = input("Skriv inn din alder: ")
if alder.isdigit():
alder = int(alder)
if alder > 0:
print(f"Du er {alder} år gammel.")
else:
print("Alder kan ikke være mindre enn 1.")
else:
print("Vennligst skriv inn et gyldig tall.")
- SQL Injection Beskyttelse
➡️ Norsk: Når du jobber med databaser, er det viktig å bruke sikre spørringer for å unngå SQL-injections, som er en vanlig angrepstype der ondsinnet SQL-kode kan bli injisert.
➡️ Engelsk: When working with databases, it's important to use secure queries to avoid SQL injections, which are a common attack where malicious SQL code can be injected.
import sqlite3
conn = sqlite3.connect('database.db')
cur = conn.cursor()
# Sikker spørring med parameterisering
bruker_input = "admin"
cur.execute("SELECT * FROM brukere WHERE brukernavn = ?", (bruker_input,))
conn.commit()
conn.close()
📁 Avanserte Dataoperasjoner og Algoritmer
- Filkryptering
➡️ Norsk: Når vi arbeider med sensitive data, er det viktig å kryptere filer slik at informasjonen er sikker, selv om filen blir stjålet.
➡️ Engelsk: When working with sensitive data, it's important to encrypt files so that the information is secure, even if the file is stolen.
from cryptography.fernet import Fernet
# Generer en nøkkel
nøkkel = Fernet.generate_key()
f = Fernet(nøkkel)
# Krypter en melding
kryptert_melding = f.encrypt(b"Hemmelig melding")
print(kryptert_melding)
# Dekrypter meldingen
dekryptert_melding = f.decrypt(kryptert_melding)
print(dekryptert_melding)
- Avanserte Algoritmer (Dijkstra’s algoritme)
➡️ Norsk: Dijkstra’s algoritme brukes for å finne den korteste veien mellom to noder i en graf. Dette er nyttig for problemer som navigasjon og ruting.
➡️ Engelsk: Dijkstra’s algorithm is used to find the shortest path between two nodes in a graph. This is useful for problems like navigation and routing.
import heapq
def dijkstra(graf, start):
avstand = {node: float('infinity') for node in graf}
avstand[start] = 0
prioritet = [(0, start)]
while prioritet:
nåværende_avstand, node = heapq.heappop(prioritet)
for nabo, vekt in graf[node]:
distanse = nåværende_avstand + vekt
if distanse < avstand[nabo]:
avstand[nabo] = distanse
heapq.heappush(prioritet, (distanse, nabo))
return avstand
# Eksempel på en graf
graf = {
'A': [('B', 1), ('C', 4)],
'B': [('C', 2), ('D', 5)],
'C': [('D', 1)],
'D
': []
}
print(dijkstra(graf, 'A'))
🎯 Oppsummering Del 7:
I denne delen har vi utforsket:
- Anonyme funksjoner (
lambda
) og rekursjon. - Grunnleggende algoritmer som
bubblesort
og Dijkstra’s algoritme. - Hvordan du lager grafiske brukergrensesnitt med
Tkinter
. - Sikkerhetstiltak som input validering og SQL-injection beskyttelse.
- Avanserte operasjoner som filkryptering.