PCEP Python‐opplæring for nybegynnere7 - itnett/FTD02H-N GitHub Wiki
Flott! Nå som du har fått en solid forståelse av Python og hvordan du kan skrive, refaktorere, og kombinere kode, er det på tide å se hvordan du kan bruke denne kunnskapen i praktiske, virkelige scenarioer. Vi vil fokusere på hvordan du kan bruke Python til å løse reelle problemer, jobbe med data og automatisere oppgaver. Dette er det naturlige neste steget for å bruke Python til nyttige formål etter å ha lært språket.
I denne delen skal vi dekke:
- Reelle Python-prosjekter
- Dataanalyse med Python
- Automatisering med Python
- Webskraping med Python
- API-integrasjoner
- Hvordan forbedre Python-ferdighetene dine videre
Å bruke Python i reelle prosjekter gir deg praktisk erfaring med hvordan språket kan brukes for å løse problemer. Vi skal se på noen eksempler der Python kan brukes til hverdagslige oppgaver.
Dette prosjektet vil lage en enkel to-do liste der brukeren kan legge til, fjerne og se oppgaver.
Kode for To-do liste:
# Enkelt program for to-do liste
todo_liste = []
def vis_liste():
"""Viser alle oppgavene i listen"""
if not todo_liste:
print("Listen er tom.")
else:
print("Oppgavene dine:")
for index, oppgave i enumerate(todo_liste, start=1):
print(f"{index}. {oppgave}")
def legg_til_oppgave(oppgave):
"""Legger til en ny oppgave i listen"""
todo_liste.append(oppgave)
print(f"Oppgaven '{oppgave}' er lagt til.")
def fjern_oppgave(indeks):
"""Fjerner en oppgave fra listen basert på indeks"""
try:
oppgave = todo_liste.pop(indeks - 1)
print(f"Oppgaven '{oppgave}' er fjernet.")
except IndexError:
print("Ingen oppgave funnet på den indeksen.")
while True:
print("\n1: Vis oppgaver\n2: Legg til oppgave\n3: Fjern oppgave\n4: Avslutt")
valg = input("Velg et alternativ: ")
if valg == "1":
vis_liste()
elif valg == "2":
oppgave = input("Hva vil du legge til? ")
legg_til_oppgave(oppgave)
elif valg == "3":
vis_liste()
indeks = int(input("Hvilken oppgave vil du fjerne? "))
fjern_oppgave(indeks)
elif valg == "4":
print("Avslutter programmet.")
break
else:
print("Ugyldig valg, prøv igjen.")
Hva lærer du:
- Hvordan jobbe med lister og funksjoner.
- Hvordan bygge en enkel, interaktiv applikasjon.
- Hvordan håndtere brukerinput.
Python er et kraftig verktøy for dataanalyse, og med biblioteker som Pandas og Matplotlib kan du jobbe med store datasett, analysere trender og visualisere data.
Her er et enkelt eksempel på hvordan du kan bruke Pandas til å analysere data.
Installasjon av Pandas: Først må du installere Pandas hvis du ikke allerede har det.
pip install pandas
Kode for dataanalyse med Pandas:
import pandas as pd
# Lag et eksempel datasett
data = {
'Navn': ['Anna', 'Bjørn', 'Caroline', 'David'],
'Alder': [25, 30, 22, 35],
'By': ['Oslo', 'Bergen', 'Trondheim', 'Stavanger']
}
# Opprett en DataFrame
df = pd.DataFrame(data)
# Skriv ut dataen
print("Dataen:\n", df)
# Gjør noen enkle analyser
print("\nGjennomsnittsalder:", df['Alder'].mean())
print("Maks alder:", df['Alder'].max())
print("Person med høyest alder:\n", df[df['Alder'] == df['Alder'].max()])
Hva lærer du:
- Hvordan bruke Pandas for å opprette og manipulere datasett.
- Hvordan gjøre enkle analyser som gjennomsnitt og maksimum.
- Hvordan filtrere data i en DataFrame.
Python kan automatisere repetisjonstunge oppgaver som å håndtere filer, sende e-poster, eller hente data fra nettsteder.
Dette programmet organiserer filer i en mappe ved å flytte dem til mapper basert på filtypen.
Kode for filorganisering:
import os
import shutil
def organiser_filer(mappe):
"""Organiserer filer i angitt mappe basert på filtype"""
for filnavn in os.listdir(mappe):
filsti = os.path.join(mappe, filnavn)
if os.path.isfile(filsti):
filtype = filnavn.split('.')[-1]
destinasjonsmappe = os.path.join(mappe, filtype)
os.makedirs(destinasjonsmappe, exist_ok=True)
shutil.move(filsti, os.path.join(destinasjonsmappe, filnavn))
print(f"Flyttet {filnavn} til {destinasjonsmappe}")
# Bruk funksjonen
organiser_filer("minmappe") # Erstatt med riktig mappe
Hva lærer du:
- Hvordan bruke
os
ogshutil
-modulene for å jobbe med filer og mapper. - Hvordan organisere filer basert på filtyper.
Webskraping er prosessen med å hente data fra nettsider. Python har biblioteker som BeautifulSoup og Requests som gjør dette enkelt.
Vi skal skrape tittel og tekst fra en nettside ved hjelp av BeautifulSoup.
Installasjon av BeautifulSoup og Requests:
pip install beautifulsoup4 requests
Kode for webskraping:
import requests
from bs4 import BeautifulSoup
# URL-en til nettsiden du vil skrape
url = "https://example.com"
# Send en forespørsel til nettsiden
respons = requests.get(url)
# Sjekk om forespørselen var vellykket
if respons.status_code == 200:
# Analyser HTML-innholdet
soup = BeautifulSoup(respons.content, "html.parser")
# Finn og skriv ut tittelen
tittel = soup.find("title").get_text()
print("Tittel:", tittel)
# Finn og skriv ut all teksten på nettsiden
tekst = soup.get_text()
print("Tekst:\n", tekst)
else:
print(f"Kunne ikke hente nettsiden. Statuskode: {respons.status_code}")
Hva lærer du:
- Hvordan sende HTTP-forespørsler til en nettside.
- Hvordan analysere HTML-innholdet ved hjelp av BeautifulSoup.
- Hvordan hente spesifikk informasjon som tittel eller tekst.
Mange tjenester har API-er (Application Programming Interfaces) som lar deg samhandle med dem. Python kan brukes til å hente data fra API-er og bruke det i applikasjonene dine.
Vi bruker OpenWeatherMap sitt API for å hente værdata for en gitt by.
Installasjon av Requests-biblioteket:
pip install requests
Kode for å hente værdata:
import requests
# Din API-nøkkel (registrér deg på OpenWeatherMap for å få en gratis nøkkel)
api_key = "din_api_nøkkel"
by = "Oslo"
url = f"http://api.openweathermap.org/data/2.5/weather?q={by}&appid={api_key}&units=metric"
respons = requests.get(url)
data = respons.json()
if respons.status_code == 200:
temperatur = data['main']['temp']
vær = data['weather'][0]['description']
print(f"Været i {by}: {vær}, {temperatur}°C")
else:
print(f"Kunne ikke hente værdata. Statuskode: {respons.status_code}")
Hva lærer du:
- Hvordan sende forespørsler til API-er.
- Hvordan hente JSON-data og analysere det.
- Hvordan bruke data fra API-er i applikasjoner.
For å fortsette å forbedre Python-ferdighetene dine, anbefaler jeg å:
-
Løse flere praktiske oppgaver: Jobb med små prosjekter, og prøv å løse problemer i virkelige scenarioer.
-
**Bidra til å
pen kildekode**: Delta i open-source prosjekter på GitHub for å få erfaring med å jobbe i større kodebaser.
-
Fordyp deg i avanserte konsepter: Når du er komfortabel med det grunnleggende, kan du utforske avanserte emner som:
- Objektorientert programmering (OOP)
- Asynkron programmering
- Dypdykk i Python-biblioteker (NumPy, SciPy, TensorFlow, etc.)
-
Fortsett å lære: Python har et stort økosystem av verktøy og biblioteker. Å lære hvordan du jobber med databaser, dataanalyse, webutvikling eller maskinlæring med Python vil åpne mange dører.
-
Hold deg oppdatert: Følg Python-fellesskapet gjennom konferanser, bloggposter, og forum som StackOverflow eller Reddit.
I denne delen har du sett hvordan du kan bruke Python til å:
- Løse reelle problemer som å lage en to-do-liste eller organisere filer.
- Gjøre dataanalyse ved hjelp av Pandas.
- Automatisere oppgaver som filhåndtering.
- Hente data fra nettsider eller API-er.
Nå kan du kombinere alt du har lært til å bygge egne, kreative prosjekter! Fortsett å eksperimentere, og ikke vær redd for å dykke dypere inn i nye temaer og utfordringer. Python er et kraftig verktøy som kan brukes til så mange forskjellige oppgaver – jo mer du utforsker, jo bedre blir du!
Fantastisk! Nå som du har fått en god forståelse av hvordan Python kan brukes i reelle prosjekter og hvordan du kan automatisere oppgaver, analysere data og samhandle med API-er, skal vi dykke videre inn i mer avanserte Python-teknikker og beste praksis. Dette vil hjelpe deg med å skrive mer effektiv, vedlikeholdbar og profesjonell kode. Vi vil også se på noen av de mest brukte Python-bibliotekene og verktøyene som tar Python fra et grunnleggende til et profesjonelt nivå.
I denne delen skal vi dekke:
- Avanserte Python-konsepter
- Testing av Python-kode
- Beste praksis for kodekvalitet
- Python-biblioteker for profesjonell utvikling
- Prosjekt: Bygg et Python-prosjekt fra start til slutt
- Hvordan delta i Python-fellesskapet
Decoratorer er en avansert Python-funksjonalitet som lar deg modifisere oppførselen til en funksjon eller metode uten å endre koden i selve funksjonen. Dette er veldig nyttig når du vil legge til ekstra funksjonalitet, som logging, før eller etter en funksjon kjører.
def log_decorator(func):
"""Decorator som logger når en funksjon blir kalt"""
def wrapper(*args, **kwargs):
print(f"Kaller funksjonen {func.__name__}")
result = func(*args, **kwargs)
print(f"Ferdig med å kalle {func.__name__}")
return result
return wrapper
@log_decorator
def si_hei(navn):
print(f"Hei, {navn}!")
# Test
si_hei("Anna")
Hva lærer du:
- Hvordan bruke decorators til å legge til ekstra funksjonalitet til eksisterende funksjoner.
- Hvordan funksjoner kan ta andre funksjoner som argumenter.
Generatorer kan brukes til å skape verdier på forespørsel, noe som er veldig effektivt for å jobbe med store datasett uten å bruke for mye minne.
def uendelig_tall():
"""Generator som gir en uendelig tallrekke"""
teller = 0
while True:
yield teller
teller += 1
generator = uendelig_tall()
# Skriver ut de første 10 tallene i den uendelige sekvensen
for i in range(10):
print(next(generator))
Hva lærer du:
- Hvordan bruke generatorer for å lage sekvenser uten å bruke for mye minne.
- Hvordan
yield
fungerer i Python.
Asynkron programmering lar deg håndtere flere oppgaver samtidig uten å blokkere hovedtråden. Dette er spesielt nyttig når du jobber med nettverkskall eller store I/O-operasjoner.
import asyncio
async def vent(tid, navn):
print(f"Starter {navn}")
await asyncio.sleep(tid)
print(f"Ferdig med {navn} etter {tid} sekunder")
async def hovedfunksjon():
await asyncio.gather(
vent(1, "Oppgave 1"),
vent(2, "Oppgave 2"),
vent(3, "Oppgave 3")
)
# Kjør den asynkrone hovedfunksjonen
asyncio.run(hovedfunksjon())
Hva lærer du:
- Hvordan asynkron programmering kan forbedre ytelse i program som utfører flere oppgaver samtidig.
- Hvordan
async
ogawait
fungerer i Python.
Testing er en viktig del av profesjonell utvikling. Med tester kan du forsikre deg om at koden fungerer som forventet, og at endringer ikke introduserer feil.
Python har et innebygd testing-rammeverk kalt unittest
. Dette brukes til å lage tester for funksjoner og klasser.
import unittest
def addisjon(a, b):
return a + b
class TestMatteFunksjoner(unittest.TestCase):
def test_addisjon(self):
self.assertEqual(addisjon(2, 3), 5)
self.assertEqual(addisjon(-1, 1), 0)
if __name__ == "__main__":
unittest.main()
Hva lærer du:
- Hvordan skrive og kjøre enhetstester med
unittest
. - Hvordan sikre at funksjoner returnerer riktig resultat.
For å skrive profesjonell Python-kode, bør du følge noen beste praksiser:
PEP 8
er en stilguide for å skrive Python-kode som gjør koden lettere å lese og vedlikeholde. Noen av hovedprinsippene inkluderer:
- Bruk 4 mellomrom per innrykk.
- Hold linjene korte, maks 79 tegn.
- Legg til et tomt linjeskift før og etter funksjoner.
Type hints hjelper deg og andre utviklere å forstå hvilken type verdier en funksjon skal motta og returnere.
def addisjon(a: int, b: int) -> int:
return a + b
Her er noen av de mest brukte Python-bibliotekene du bør kjenne til som profesjonell Python-utvikler:
- Flask / Django: Webrammeverk for å lage applikasjoner.
- Requests: Håndtering av HTTP-forespørsler for API-kommunikasjon.
- Pandas / NumPy: Dataanalyse og -manipulasjon.
- Matplotlib / Seaborn: Data-visualisering.
Vi skal nå sette alt sammen og bygge et fullverdig Python-prosjekt. Vi lager en web-app som henter og viser værdata ved hjelp av Flask og OpenWeather API.
For å isolere prosjektets avhengigheter.
python -m venv venv
source venv/bin/activate # Mac/Linux
venv\Scripts\activate # Windows
pip install flask requests
from flask import Flask, render_template, request
import requests
app = Flask(__name__)
@app.route('/')
def hjem():
return render_template('index.html')
@app.route('/vær', methods=['POST'])
def hent_vær():
by = request.form['by']
api_key = 'din_api_nøkkel'
url = f'http://api.openweathermap.org/data/2.5/weather?q={by}&appid={api_key}&units=metric'
respons = requests.get(url)
data = respons.json()
if respons.status_code == 200:
temperatur = data['main']['temp']
værbeskrivelse = data['weather'][0]['description']
return render_template('vær.html', by=by, temperatur=temperatur, værbeskrivelse=værbeskrivelse)
else:
return 'Feil: Kunne ikke hente værdata'
if __name__ == '__main__':
app.run(debug=True)
Lag også en enkel HTML-fil index.html
som sender brukeren til /vær
-siden:
<!DOCTYPE html>
<html lang="no">
<head>
<meta charset="UTF-8">
<title>Værdata</title>
</head>
<body>
<h1>Søk etter værdata</h1>
<form action="/vær" method="POST">
<input type="text" name="by" placeholder="Skriv inn en by">
<button type="submit">Søk</button>
</form>
</body>
</html>
python app.py
Python-fellesskapet er en fantastisk ressurs for å forbedre ferdighetene dine og bidra til open-source prosjekter. Noen anbefalte ressurser:
- GitHub: Delta i prosjekter og bidra med kode.
- StackOverflow: Still spørsmål og hjelp andre med deres kodeproblemer.
- Reddit: Følg subreddits som r
/learnpython eller r/Python for tips og diskusjoner. 4. Python-konferanser: Delta på Python-konferanser som PyCon for å møte andre utviklere.
Nå har du fått en introduksjon til avanserte Python-konsepter, testing, beste praksis og hvordan du bygger fullstendige prosjekter med profesjonell kode. Fortsett med å eksperimentere, lage nye prosjekter, og delta i Python-fellesskapet for å forbedre dine ferdigheter videre!
Lykke til med videre Python-utvikling! 🚀