Løsningsforslag, mer om Python

Python Tutor

Oppgave 1:

Vi skal legge inn koden under i Python Tutor, og bruke «Next >» til å gå gjennom den skritt for skritt.

for n in range(1, 5):
    if n % 2 == 0:
        print(f"{n} er et partall")
    else:
        print(f"{n} er et oddetall")

Illustrasjon av kjøring i Python Tutor

Mens vi klikker, ser vi at pila i hvert gjennomløp av løkka peker på rad 1 og 2, men bare annen hver gang på rad 3 og 5, avhengig av om n er partall eller oddetall.

Tilbake til oppgaven

Konstanter

Oppgave 1:

Vi skal skrive Python-kode som leser inn et antall nautiske mil, konverterer til kilometer, og skriver ut resultatet med 3 desimaler. Det er oppgitt at 1 nm = 1,852 km, og vi skal representere konverteringsfaktoren som en konstant i koden.

Koden kan se slik ut:

# Leser inn nautiske mil og konverterer til kilometer
NM_TIL_KM = 1.852
nm = float(input("Oppgi antall nautiske mil: "))
km = nm * NM_TIL_KM
print(f"{nm:.3f} nautiske mil er {km:.3f} kilometer.")

Tilbake til oppgaven

Metoder

Oppgave 1:

Vi har Python-koden

hilsen = "GOD MORGEN, ALLE SAMMEN!"

og skal skrive kode som skriver ut hilsen med bare små bokstaver.

Vi leter på referansesiden Python String Methods. og finner ut at metoden vi trenger heter lower(). Så koden blir

print(hilsen.lower())

Tilbake til oppgaven

Import fra moduler

Oppgave 1:

Vi skal skrive Python-kode som bruker funksjonen randint() i modulen random til å simulere terningkast.

Koden kan se slik ut:

from random import randint

print(f"Terningkast {randint(1, 6)}")

Alternativt

import random

print(f"Terningkast {random.randint(1, 6)}")

Tilbake til oppgaven

Oppgave 2:

Vi skal endre koden fra oppgave 1 slik at randint() blir importert med alias rint() og brukt i koden.

Vi legger da til teksten as rint bak randint, og bruker rint() i stedet for randint() i koden.

from random import randint as rint

print(f"Terningkast {rint(1, 6)}")

Hvis vi velger varianten med å importere hele modulen, kan vi bare gi alias til modulnavnet, ikke enkeltfunksjoner i modulen.

Tilbake til oppgaven

Logiske operatorer

Oppgave 1:

Vi skal analysere Python-koden under og avgjøre om den vil skrive ut True eller False

x = -3
y = 4
print( x > 0 or x < y)

Her er to betingelser. Den første, x > 0, er False fordi x = −3. Den andre, x < y, er True fordi x = −3 og y = 4. Siden de to betingelsene er bundet sammen med or, og minst én av dem er True, vil det bli skrevet ut True.

Tilbake til oppgaven

Oppgave 2:

Vi skal analysere to linjer med Python-kode og avgjøre om de vil skrive ut True eller False.

print(True or False and False)

Siden and har høyere prioritet enn or, får vi:
True or False and FalseTrue or FalseTrue
Python vil skrive ut True.

print(True and False or not(False and True))

Siden parenteser beregnes først, deretter not, and og or, får vi:
True and False or not(False and True) → True and False or not(False) → True and False or TrueFalse or TrueTrue
Python vil skrive ut True.

Tilbake til oppgaven

Boolsk algebra

Oppgave 1:

Ved å sette opp sannhetstabeller skal vi bevise:

    • a == True er det samme som a.

a kan enten være True eller False, og vi kan sette opp følgende sannhetstabell:

a True False
a == True True == TrueTrue False == TrueFalse

Vi ser at resultatet er likt i begge tilfeller.

    • not (a or b) er det samme som not a and not b.

a og b kan være henholdsvis True og False, og vi kan sette opp følgende sannhetstabell:

a True True False False
b True False True False
not (a or b) not (True or True)
not TrueFalse
not (True or False)
not TrueFalse
not (False or True)
not TrueFalse
not (False or False)
not False True
not a and not b not True and not True
False and FalseFalse
not True and not False
False and TrueFalse
not False and not True
True and FalseFalse
not False and not False
True and TrueTrue

Vi ser at resultatet er likt i alle 4 tilfeller.

Tilbake til oppgaven