Alle fag › Programmering med Python

Programmering med Python (Python): gratis øving, teori og oppgaver

Et program er en oppskrift som datamaskinen følger linje for linje. I Python lagrer du verdier i variabler, regner med dem og skriver ut resultatet. Som ingeniør bruker du dette til å automatisere beregninger, lese måledata og teste ideer raskt, i stedet for å taste det samme inn på kalkulatoren hundre ganger.

4 deler80 oppgaver16 begreper forklartPrøveeksamenGratis
Start å øve gratis →

Innhold

  1. Grunnleggende Python
  2. Løkker og betingelser
  3. Funksjoner og datastrukturer
  4. Filer, feil og moduler

1. Grunnleggende Python

Hva handler det om?

Et program er en oppskrift som datamaskinen følger linje for linje. I Python lagrer du verdier i variabler, regner med dem og skriver ut resultatet. Som ingeniør bruker du dette til å automatisere beregninger, lese måledata og teste ideer raskt, i stedet for å taste det samme inn på kalkulatoren hundre ganger.

Alt i Python har en type. Typen bestemmer hva du kan gjøre med verdien: tall kan du regne med, tekst kan du skjære opp og sette sammen.

Begreper og formler

Slik løser du oppgavene

  1. Les koden linje for linje, og skriv ned verdien til hver variabel etter hver linje.
  2. Finn typen til hver verdi (int, float eller str) før du regner.
  3. Regn ut uttrykk i riktig rekkefølge: parenteser, så **, så * / // % fra venstre, og til slutt + -.
  4. Sjekk om svaret blir heltall eller desimaltall, og hvordan det skrives ut.

Eksempel

En sensor sender teksten "L=1234mm". Vi vil ha lengden i meter:

s = "L=1234mm"
mm = int(s[2:-2])
m = mm / 1000
print(m, mm // 1000, mm % 1000)
  1. s[2:-2] starter på indeks 2 (etter L=) og stopper før de to siste tegnene. Det gir "1234".
  2. int("1234") gjør teksten om til heltallet 1234.
  3. mm / 1000 gir float-verdien 1,234.
  4. mm // 1000 er 1 (hele meter), og mm % 1000 er 234 (resten i millimeter).

Utskriften blir 1.234 1 234. Legg merke til at Python alltid bruker punktum som desimaltegn.

Vanlige feil

Følg verdiene linje for linje og hold styr på typen. De fleste overraskelser i Python skyldes at en verdi har en annen type enn du tror.

Begreper i denne delen

Øv på grunnleggende python i appen →

2. Løkker og betingelser

Hva handler det om?

Et program blir virkelig nyttig først når det kan ta valg og gjenta arbeid. Betingelser (if) lar programmet velge vei ut fra dataene, for eksempel å slå av en pumpe når trykket blir for høyt. Løkker (for og while) gjentar kode, for eksempel for å gå gjennom tusen måleverdier eller simulere en prosess minutt for minutt.

Begreper og formler

Slik løser du oppgavene

  1. Lag en tabell med én kolonne per variabel og én rad per runde i løkka.
  2. I en while-løkke sjekker du betingelsen før hver runde.
  3. Følg innrykket nøye: hva skjer inne i løkka, og hva skjer etterpå?
  4. Stopp når betingelsen blir usann eller break kjøres, og les av verdiene.
  5. Kontroller første og siste runde ekstra nøye. Det er der de fleste feilene skjer.

Eksempel

En tank inneholder 500 L og tappes med 20 % av innholdet hvert minutt. Etter hvor mange minutter er det under 100 L igjen?

V = 500.0
t = 0
while V >= 100:
    V = 0.8 * V
    t += 1
print(t)

Verditabell (V etter hver runde): t = 1: 400, t = 2: 320, t = 3: 256, t = 4: 204,8, t = 5: 163,84, t = 6: 131,07, t = 7: 104,86 og t = 8: 83,89. Nå er V >= 100 usann, og løkka stopper. Utskriften er 8.

Kontroll med matematikk: 500⋅0,8t<100500\cdot 0{,}8^t < 100 gir t>ln⁡0,2/ln⁡0,8≈7,2t > \ln 0{,}2/\ln 0{,}8 \approx 7{,}2, altså 8 minutter.

Vanlige feil

Løkker og betingelser forstår du best med en verditabell. Skriv ned variablene for hver runde, så blir svaret sjelden feil.

Begreper i denne delen

Øv på løkker og betingelser i appen →

3. Funksjoner og datastrukturer

Hva handler det om?

Når et program vokser, deler du det opp i funksjoner: små, navngitte biter som tar inn verdier og gir tilbake et resultat. Da kan du teste hver del for seg og bruke den om igjen, for eksempel én funksjon som regner ut spenning og én som leser en fil med måledata. Datastrukturer bestemmer hvordan du lagrer mange verdier: en liste med målinger, en ordbok med materialdata eller en mengde med unike ID-er.

Begreper og formler

Slik løser du oppgavene

  1. Finn hvilke verdier parameterne får ved kallet (posisjon, nøkkelord eller standardverdi).
  2. Gå gjennom funksjonskroppen linje for linje med disse verdiene.
  3. Se etter return: hva sendes tilbake, og hva blir bare skrevet ut?
  4. Hold styr på om en liste eller ordbok endres, eller om det lages en ny.

Eksempel

def middel(xs, grense=100):
    ok = [x for x in xs if x <= grense]
    return sum(ok) / len(ok)

data = {"A": [98, 102, 97], "B": [101, 99, 150]}
res = {k: middel(v, grense=120) for k, v in data.items()}
print(res["B"])
  1. For nøkkelen "B" er xs = [101, 99, 150] og grense = 120 (nøkkelordet overstyrer standardverdien 100).
  2. Listeforståelsen beholder verdiene som er høyst 120: [101, 99]. Verdien 150 er en feilmåling og filtreres bort.
  3. sum(ok) / len(ok) blir 200 / 2 = 100.

Utskriften er 100.0. Det blir float fordi / er brukt. Tilsvarende blir res["A"] lik 99.

Vanlige feil

En funksjon tar inn parametere og gir tilbake én ting med return. Lister og ordbøker kan endres, og alle navn som peker på samme objekt, ser endringen.

Begreper i denne delen

Øv på funksjoner og datastrukturer i appen →

4. Filer, feil og moduler

Hva handler det om?

Ekte programmer leser data fra filer (måledata, loggfiler, CSV fra et regneark), må tåle feil i dataene og bruker ferdige verktøy fra moduler. Denne delen viser de få tingene du trenger for å gjøre det trygt.

Begreper og formler

with open("data.txt") as f:
    for linje in f:
        print(linje.strip())
try:
    x = float(tekst)
except ValueError:
    x = None

Slik løser du oppgavene

  1. Gå gjennom koden linje for linje, og skriv ned verdien til hver variabel.
  2. Husk at alt du leser fra en fil eller fra input(), er tekst til du gjør det om.
  3. Når en linje kan gi feil: se hvilken except som fanger den, og hopp dit.

Eksempel

data = "12;7;x;5"
tall = []
for s in data.split(";"):
    try:
        tall.append(int(s))
    except ValueError:
        pass
print(sum(tall))
  1. split(";") gir ["12", "7", "x", "5"].
  2. int("x") gir ValueError, som fanges, så "x" hoppes over.
  3. tall blir [12, 7, 5], og programmet skriver ut 24.

Vanlige feil

Fra fil: les → strip → split → gjør om til tall inne i try/except.

Begreper i denne delen

Øv på filer, feil og moduler i appen →

Eksempeloppgaver med løsning

Her er noen av oppgavene i programmering med python. I appen får regneoppgavene nye tall hver gang, så du kan øve til det sitter – og ta en prøveeksamen med karakter før eksamen.

Grunnleggende Python: Hva skriver print(7 // 2) ut?

Svar: 3

// er heltallsdivisjon og runder ned.

Løkker og betingelser: Hva skriver koden ut?
for i in range(2, 8, 2):
    print(i, end=" ")

Svar: 2 4 6

range(start, stopp, steg). Stopp-verdien er ikke med.

Funksjoner og datastrukturer: Hva returnerer en funksjon som ikke har noen return-setning?

Svar: None

Python returnerer None implisitt.

Filer, feil og moduler: Du vil legge til nye målinger på slutten av logg.txt uten å slette det som står der. Hvilken modus bruker du i open("logg.txt", ...)?

Svar: "a"

"a" (append) skriver på slutten. "w" tømmer fila først, "r" kan bare lese, og "x" gir feil hvis fila finnes fra før.

Øv på alle oppgavene →

Passer for disse emnene

Innholdet dekker pensum som går igjen i ingeniørutdanningene, blant annet: