Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Filtrering:

02.01 Hei på deg

Filnavn: hilsen.py

a) Skriv et program som ber brukeren om å skrive inn navnet sitt og lagrer svaret i en variabel kalt navn.

b) Skriv en prosedyre si_hei() som skriver ut "hei"

c) Kall prosedyren si_hei() tre ganger, og etterpå skriv ut brukerens navn

# a)
navn = input("Hva er navnet ditt? ")

# b) 
def si_hei():
    print("hei")

# c)
si_hei()
si_hei()
si_hei()
print(navn)

02.02 int, str og float

I denne oppgaven skal du finne ut hva som skrives ut til terminalen. Oppgavene består av kodesnutter, og du må lese ganske nøye for å finne ut hva som kommer til å skje.

Prøv å løse oppgavene uten å kjøre kodesnuttene først!

Hva skrives ut?

a)

print(type(3))

b)

print(type("3"))

c)

print(type(5.0 + 3.5))

d)

print(float("4" + ".8") / 2)

e)

print("3" + "5")

f)

print("3"*3)

g)

print(type(3*"A"))

h)

print(type(int("3")))

i)

print(3 + "3")

j)

print(float(3))

k)

print("1.50" == "1.5")

l)

print(float("1.50") == float("1.5"))

a) int

b) str

c) float

d) 2.4

e) 35

f) 333

g) str

h) int

i) Feilmelding (TypeError). Dette er fordi du ikke kan legge sammen en int og str.

j) 3.0

k) False

l) True

02.03 Input og datatyper

Filnavn: datatyper.py

a) Skriv et program som tar inn tre verdier – en streng, et heltall, og et flyttall – og lagrer dem i tre variabler. NB: Gjør b) før du ser på løsningsforslaget.

Hint

input() returnerer en streng som resultat. Man kan endre datatypen fra streng til en annen datatype med for eksempel int() eller float().


b) Utvid programmet slik at det skrives ut hver verdi og typen til verdien. Sjekk at typen som skrives ut er datatypen som er forventet. Hvis resultatene ikke stemmer, gå tilbake til a).

Hint

Bruk funksjonen type()



c) Kjører programmet gitt de følgende verdiene? (streng, heltall, flyttall)

Prøv å kjøre programmet selv for å se om du hadde rett

  • i. "", 0, 3.8
  • ii. 1, 2, 3
  • iii. 1, -0, 3.8
  • iv. 3.8, 3.8, 3.8

d) Utvid programmet med de følgende tilfellene og prøv å skrive ut typen av resultatet. Forklar hva som skjer. Hvis ikke programmet kjører, forklar hvorfor.

  • i. Gang heltallet med strengen
  • ii. Gang heltallet med flyttallet
  • iii. Gang strengen med flyttallet

e) Hva skjer hvis programmet prøver å konvertere et flyttall til et heltall?

a) - b)

streng = input("Skriv inn en streng: ")
heltall = int(input("Skriv inn et heltall: "))
flyttall = float(input("Skriv inn et flyttall: "))

print("Strengen:", streng, "Type:", type(streng))
print("Heltallet:", heltall, "Type:", type(heltall))
print("Flyttallet:", flyttall, "Type:", type(flyttall))

c)
 i. Ja, "" blir en tom streng.
 ii. Ja, 3 blir 3.0.
 iii. Ja, -0 blir 0.
 iv. Nei, programmet kræsjer fordi det ikke er mulig å konvertere strengen "3.8" til et heltall.

d)

i.

print("Typen av heltallet * strengen:", type(heltall * streng))

Output:

Typen av heltallet * strengen: <class 'str'>
  • Strengen blir satt sammen like mange ganger som verdien av heltallet.
    For eksempel: 3 * "a" gir strengen aaa

ii.

print("Typen av heltallet * flyttallet:", type(heltall * flyttall))

Output:

Typen av heltallet * strengen: <class 'float'>
  • Resultatet blir det samme som den vanligen matematiske operasjonen og gir et flyttall.
    For eksempel: 3 * 1.2 gir 3.6

iii.

print("Typen av strengen * flyttallet:", type(streng * flyttall))

Output: Feilmelding (TypeError)
- Det er ikke lov å gange en streng med et flyttall.

e) Når et flyttall konverteres til et heltall, blir det rudet ned til nærmeste heltall.

02.04 Hva skrives ut?

Prøv å løse oppgavene uten å kjøre kodesnuttene først!

Hva skrives ut?
a)

print(1+5*2)

b)

print(6/3*4/2)

c)

print(2*5+2*2)

d)

print(4*5+2*3/2)

e)

print(4*(5+2)*3/2)

a)

11

b)

4.0

c)

14

d)

23.0

e)

42.0

02.05: Kodeforståelse

Filnavn: sammenslaaing.py

Vil noen av disse kodesnuttene gi en feilmelding? Begrunn svaret.

Prøv å løse oppgavene uten å kjøre kodesnuttene først!

a)

a = 10
b = "hei!"
c = a + b
print(c)

b)

x = "10"
y = "hei!"
print(x + y)

c)

i = 10
j = "12"
print(i + j)

d) Forsøk å kjøre de tre kodesnuttene hver for seg, og sjekk om du hadde rett.

e) Bruk str() for å konvertere variabel a i oppgave a). Konverter variabel j fra oppgave c) til et heltall på samme måte med funksjonen int() og kjør programmet på nytt. Hva skrives ut nå?

a) Ja, vi får en TypeError fordi vi prøver å slå sammen en streng og et heltall.

b) Nei. Verdiene av x og y er begge strenger og utskriften blir "10hei" etter at de slås sammen.

c) Ja, vi får en TypeError fordi vi prøver å slå sammen en streng og et heltall. Selv om verdien til j inneholder bare sifre, er verdien en streng og kan dermed ikke slås sammen med et heltall.

e) Utskriften fra oppgave a) blir nå 10hei, mens utskriften fra oppgave c) blir 22.

02.07: Sannhetsverdier

Gitt at verdien av b er False, og verdien av x er 0, hva er sannhetsverdien til følgende uttrykk?

Prøv å løse oppgavene uten å kjøre kodesnuttene først!

a)

b

b)

x == 0

c)

b and x == 0

d)

b or x == 0

e)

not b and x == 0

f)

not b or x == 0

g)

b and x != 0

h)

b or x != 0

i)

not b and x != 0

j)

not b or x != 0

a) False

b) True

c) False

d) True

e) True

f) True

g) False

h) False

i) False

j) True

02.09: Min utskriftsprosedyre

Filnavn: min_prosedyre.py

a) Lag en prosedyre min_prosedyre som skriver ut "Hei student!" til terminalen.

b) Endre programmet slik at min_prosedyre også skriver ut "Velkommen til et nytt semester!" på en annen linje.

c) Lag en ny prosedyre linjeskift som skriver ut en tom linje.

d) Kall på min_prosedyre to ganger, men mellom kallene skal du også kalle på prosedyren linjeskift, slik at det blir et linjeskift mellom hilsene.

def min_prosedyre():
    # Oppgave a og b
    print("Hei student!")
    print("Velkommen til et nytt semester!")

def linjeskift():
    # Oppgave c
    print()

# Oppgave d
min_prosedyre()
linjeskift()
min_prosedyre()

02.11: Kodeflyt

Dette er en penn- og papiroppgave

Forklar i hvilken rekkefølge de forskjellige linjene utføres når vi kjører programmet ved å skrive tall foran linjene i programmet. Skriv linje-rekkefølgen i følgende tre scenarier:

a) Hvis brukeren taster inn 50
b) Hvis brukeren taster inn 80
c) Hvis brukeren taster inn 12

Prøv å løse oppgavene uten å kjøre kodesnuttene først!

pris = 50
tekst = input("Skriv inn alder: ")
alder = int(tekst)

if alder < 12 or alder > 67:
    print("Du må betale", pris*0.5, "kr")
else:
    print("Du må betale", pris, "kr")

print("ha en fin dag!")

PythonTutor

a)

1| pris = 50
2| tekst = input("Skriv inn alder: ")
3| alder = int(tekst)
 |
4| if alder < 12 or alder > 67:
 |     print("Du må betale", pris*0.5, "kr")
5| else:
6|     print("Du må betale", pris, "kr")
 |   
7| print("ha en fin dag!")

b)

1| pris = 50
2| tekst = input("Skriv inn alder: ")
3| alder = int(tekst)
 |
4| if alder < 12 or alder > 67:
5|     print("Du må betale", pris*0.5, "kr")
 | else:
 |     print("Du må betale", pris, "kr")
 |   
6| print("ha en fin dag!")

c) NB: alder er lik 12, ikke mindre enn 12

1| pris = 50
2| tekst = input("Skriv inn alder: ")
3| alder = int(tekst)
 |
4| if alder < 12 or alder > 67:
 |     print("Du må betale", pris*0.5, "kr")
5| else:
6|     print("Du må betale", pris, "kr")
 |   
7| print("ha en fin dag!")

02.12 Fakta om sauer

Filnavn: sau_fakta.py

I denne oppgaven skal du printe ut 5 fakta om sauer i en prosedyre. Dette skal skje på 5 forkjellige linjer.

a) Skriv prosedyren som skriver ut faktaene.

Forslag til sauefakta:

Sauer er dumme dyr.
Sauer er myke dyr.
Sauer kan lofte 12 ganger sin egen vekt.
Sauer lukter litt som geiter.
Sauen er din venn.

b) Hvordan kan vi nå skrive ut følgende linjer effektivt?

Sauer er dumme dyr.
Sauer er myke dyr.
Sauer kan lofte 12 ganger sin egen vekt.
Sauer lukter litt som geiter.
Sauen er din venn.
*** En gang til! ***
Sauer er dumme dyr.
Sauer er myke dyr.
Sauer kan lofte 12 ganger sin egen vekt.
Sauer lukter litt som geiter.
Sauen er din venn.
Hint

Bruk prosedyren fra a)


a)

def saueFakta():
    print("Sauer er dumme dyr.")
    print("Sauer er myke dyr.")
    print("Sauer kan lofte 12 ganger sin egen vekt.")
    print("Sauer lukter litt som geiter.")
    print("Sauen er din venn.")

b)

saueFakta():
print("*** En gang til! ***")
saueFakta():

02.13: Volum med feil

Filnavn: volum.py

Finn tre feil i programmet under.

Prøv å løse oppgavene uten å kjøre kodesnutt først (og så kan du prøve å kjøre/fikse koden)

1 | lengde = 3
2 | bredde = 5
3 | volum = lengde * bredde * høyde
4 | Print("Volumet er:" + volum)
  1. Linje 3: høyde er ikke definert.
  2. Linje 4: funksjonen er skrevet med en stor P, men må skrives print
  3. Linje 4: Vi brukte pluss i stedet for komma for å sammenkoble volumet med strengen. Vi kan bare bruke pluss hvis vi først kaste den til type streng: str(volum)