Uke 2 — print / input¶
I denne uken vil du finne oppgavene blandet inne med eksemplene som de følger nærmest. De større oppgavene som bruke mange konsepter fra uken er på slutten av siden. I oppgavene skal du lese inn input, og bruke det videre i koden din. Det er viktig å følge instruksene i oppgaven og skrive akkurat det som blir bedt om.
Husk på disse tingene:
Alle oppgavene skal løses med kun det dere har lært til nå (
input()
,print()
,len()
,max()
,int()
,float()
,str()
og enkle beregninger).Hver gang du leser inn noe med
input()
skal svaret være på den samme linjen. Skriv f.eksinput('Skriv noe: ')
, istedet forinput('Skriv noe:\n')
(\n
legger til en ny linje).Les oppgaveteksten nøye, det er vanlig å måtte lese igjennom flere ganger før du forstår det 100%.
Når eksempelkjøringer er oppgitt, skal kjøringen se ut akkurat som oppgitt, dette inkluderer mellomrom osv.
Eksempler¶
Les kapittel 1 av Automate the boring stuff.
I følgende kodeeksempler skal du først lese koden, så forsøke å forstå hva den gjør. Etterpå skal du prøve å kjøre koden og se om den gjør det du trodde den kom til å gjøre.
En bra resurs til å skjønne hva som skjer når du kjører pythonkode er å bruke visualiseringsverktøyet på pythontutor.com. Du kan kopiere inn koden du vil forstå i vinduet og klikke på ’Visualize execution’, så kan du gå igjennom programmet steg for steg og se hva som skjer. Du kan bruke denne siden så mye du trenger gjennom hele kurset for å hjelpe deg å forstå koden du skriver. Lenken finnes også på mitt.uib.no ved å klikke på ’Ressurser’ på startsiden til INF100.
Obs
For å laste ned filene, kan du høyreklikke / ctrl-klikke på dem og velge «Save link as» fra menyen. Lagre filene i en mappe du bruker for INF100, så åpner du den samme mappen i VSCode etterpå.
Eksempel 1¶
Last ned filen her: hello_1.py
.
print("Hello World!")
print()
print("Hei hei")
print("Velkommen!")
print()
print("Prøv å skrive ut mer...")
2 + 2
print(9 + 8)
Hva tror du outputet blir? Var det riktig? Prøv å kopiere inn denne koden i visualiseringsverktøyet og steg igjennom koden. Ser det ut som du tenkte?
Oppgave 1¶
I filen uke_02_oppg_1.py
, skriv kode som skriver akkurat følgende output i terminalen:
Eksempelkjøring:
Hei, det er jeg, datamaskinen.
Hyggelig å se deg her.
Jeg håper du får en fin dag videre!
Eksempel 2¶
Last ned filen her: hello_2.py
.
sted = "Vi er i Bergen"
print(sted)
flere = "Aaa\nBbb\nCcc" # hva betyr \n her?
print(flere)
hei = "Hei alle sammen!"
print(hei * 3)
print("&" * 5)
# Hva er forskjellen her?
print(4 + 7)
print("4 + 7")
print()
x = 12
y = 20
print("x =", x)
print("y =", y)
print("y - x =", y - x)
print()
x = x + 1
y = y + 5
print("x =", x)
print("y =", y)
print("y + x =", y - x)
# Hvorfor er svaret feil her?
Svar på spørsmålene i filen. Hva tror du outputet blir? Var det riktig? Bruk visualiseringsverktøyet hvis du trenger det.
Eksempel 3¶
Når du kjører Pythonkode som inneholder input()
så stanser kjøringen
når den kommer til input()
. Der venter den til den har fått input fra
brukeren i terminalen. Etter den har fått input
fortsetter kjøringen.
Last ned filen her: input_1.py
.
print("God morgen!")
# Hvorfor setter vi et mellomrom etter spørsmålstegn?
navn = input("Hva heter du? ")
# Her gjør komma det samme som mellomrommet i forrige linje
print("Hyggelig å hilse på deg,", navn)
Kjør koden. Blir «Hyggelig å hilse på deg» printet før eller etter at du gitt ditt navn? Bruk visualiseringsverktøyet hvis du trenger det.
Eksempel 4¶
Last ned filen her: input_2.py
.
# Input kan brukes uten = (assignment),
# men hva skjer med svaret her?
input("Kan vi gå videre? ")
a = input("Tall A: ")
b = input("Tall B: ")
print("Summen er ", a + b)
a = int(a)
b = int(b)
print("Summen er ", a + b)
Svar på spørsmålet i filen. Hva tror du outputet blir? Var det riktig? Hvorfor blir de to siste ulike? Bruk visualiseringsverktøyet hvis du trenger det.
Oppgave 2¶
I filen uke_02_oppg_2.py
, skriv kode som gjør følgende, i oppgitt rekkefølge:
Leser inn brukerens navn via
input()
.Leser inn brukerens gateadresse via
input()
.Leser inn brukerens postkode og poststed via
input()
.Printer «navn-s adresse er:»
Printer en tom linje
Printer navn og adresse slik som man skriver det på et brev.
(Tips: du må bruke navnet to ganger, så det er en god idé å lagre det i en variabel.)
Eksempelkjøring:
Hva er ditt navn? Kari Nordmann
Hva er din adresse? Gateveien 1
Hva er ditt postnummer og poststed? 1234 Stedet
Kari Nordmanns adresse er:
Kari Nordmann
Gateveien 1
1234 Stedet
Eksempel 5¶
Vi skal snakke mer on funksjonene litt senere i semesteret, men kort fortalt er en funksjon et selvstendig kodestykke som tar input, gjør noe og returnerer et resultat. For eksempel, funksjonen len()
kan brukes til å beregne hvor mange tegn det er i en tekststreng.
Vi kan bruke len()
til å for eksempel lage understrekk under et
navn.
Last ned filen her: len_1.py
.
navn = "Ola"
lengde = len(navn)
print("Navnet ditt har", lengde, "bokstaver.")
understrek = "-" * lengde
print()
print(navn)
print(understrek)
print()
print()
print()
Skjønner du hva som skjer? Bruk visualiseringsverktøyet hvis du trenger det.
Oppgave 3¶
I filen uke_02_oppg_3.py
, skriv kode som gjør følgende, i oppgitt
rekkefølge:
Spørre brukeren om navnet deres via
input()
. (Tips: lagre input i en variabel.)Hilse på personen med
print()
-funksjonen.Skrive ut antall bokstaver i navnet med
len()
- ogprint()
-funksjonene.
Eksempelkjøring:
Hva heter du? Ola
Hei Ola!
3
Eksempel 6¶
Funksjonen max()
returnerer den maksimale verdien av de tingene du putter
inn. Den kan ta hvor mange argumenter som helst.
Last ned filen her: max_1.py
.
print(max(3, 1))
print(max(5, 12, -3))
print(max(4.2, 9, -13.4, 22.52, 14))
a = 5 + 2
b = 13 - 4
print(max(a, b, 4 + 4))
Ble outputet som du trodde? Bruk visualiseringsverktøyet hvis du trenger det.
Oppgave 4¶
I filen uke_02_oppg_4.py
, skriv kode som gjør følgende, i oppgitt rekkefølge:
Leser inn brukerens navn via
input()
.Leser inn brukerens gateadresse via
input()
.Leser inn brukerens postkode og poststed via
input()
.Printer hvor lenge den lengste raden er.
Obs
TIPPS: Bruk len()
og max()
Eksempelkjøring:
Hva er ditt navn? Kari Nordmann
Hva er din adresse? Gateveien 1
Hva er ditt postnummer og poststed? 1234 Stedet
13
Eksempel 7¶
Med Python og andre programmeringsspråk er en vanlig oppgave å tilpasse og bruke en matematisk formel i kode. For eksempel, arealet (A) av et rom beregnes som lengde (L) multiplisert med bredde (W). Formelen til areal er skrevet som:
Last ned filen her: calc.py
.
# Finner arealet av stuen din.
lengde = input("Hva er lengden (m) på stuen din? ")
bredde = input("Hva er bredden (m) på stuen din? ")
lengde = float(lengde)
bredde = float(bredde)
arealet = lengde * bredde
print("Stuen din er", arealet, "m^2.")
Kan du identifisere hvilke variabler i koden som tilsvarer variablene i den matematiske formelen?
Hva tror du outputet blir? Hvorfor må vi bruke
float()
før beregningen av arealet? Hva skjer om vi ikke bruker float()
? Bruk
visualiseringsverktøyet
hvis du trenger det.
Oppgave 5¶
I filen uke_02_oppg_5.py
, skriv kode som gjør følgende, i oppgitt rekkefølge:
Spør brukeren om en vekt i enheten stones og enheten pounds via to
input()
funksjoner, og lagre inputen i to variabler.Beregner tilsvarende vekt til summen av inputvektene, i enheten kilogram. Konverter først stones til kilogram med formelen
\[V_{kg} = \frac{V_{st}}{0.15747},\]hvor \(V_{kg}\) er vekten i kilogram og \(V_{st}\) er vekten i stones. Konverter siden pounds til kilogram med formelen
\[V_{kg} = \frac{V_{lb}}{2.20462},\]hvor \(V_{kg}\) er vekten i kilogram og \(V_{lb}\) er vekten i pounds. Summér til sist de to verdiene du har beregnet.
Print resultatet.
Eksempelkjøring:
Vekt i stones: 3
Vekt i pounds: 6
Vekt i kilogram: 21.772805313348453
Eksempel 8¶
Turtle module example, drawing a square
turtle
er et forhåndsinstallert Python-bibliotek som lar brukere lage bilder og former ved å gi dem et virtuelt skjerm. Den penn som brukere tegner med heter turtle og det gir biblioteket navnet sitt. Biblioteket er nyttig for de som er ny til programmering å lære programmering på en veldig visuell måte. Vi begynner med noe enkelt, men vil bygge videre på dette i løpet av de neste ukene. Kjør koden nedenfor og se hva turtlen gjør.
Last ned filen her: turtle_1.py
.
import turtle as t
t.shape("turtle") # hva skjer hvis vi kommenterer ut denne linjen?
# prøv å endre rekkefølgen på instruksjonene
t.forward(100)
t.left(120)
t.forward(100)
t.left(120)
t.forward(100)
t.done() # hva skjer hvis vi kommenterer ut denne linjen?
Spill gjerne med koden og prøve å gjør andre ting med turtlen, for eksempel tegner en annen form, endre bakgrunnsfargen. The Beginner’s Guide to Python Turtle er en god ressurs for å lære mer og eksperimentere.
Obs
IKKE lagre filen som turtle.py
. Dette vil skape konflikter med importen fra turtle
-modulen. Ethvert annet navn vil fungere.
Eksempel 9¶
Denne filen inneholder noen feil som gjør at den ikke kan kjøres. Finn feilen(e) og endre koden slik at den kan kjøres (Vi har lagt til linjenumre i denne blokken for å hjelpe med å diskutere kodebiter).
Last ned filen her: errors_1.py
.
1a = 7
2b = 12
3sted = 'Vi er i Bergen'
4print(stedt)
5
6flere = 'Aaa\nBbb\nCcc'
7print(flere)
8
9print('\n' + 3)
10
11print(4 + )
12print('4 + 7')
13
14prin()
15
16x = 12
17y = 20
18print('x =', x)
19print('y =', y)
20print('y - x =', z-x)
21print()
22
23x = x + 1
24y = y + 5
25print('x =', x)
26print('y =', y)
27print('y + x =', y-x)
28
29print('God morgen!)
30
31input('Hva heter du? ')
32print('Hyggelig å hilse på deg,',navn)
33
34A = input('Tall A:')
35B = input('Tall B:')
36
37print('Summen av A og B er:', a + b)
Å finne og fikse feil i koden én etter én er en vanlig måte å jobbe på. (Vanligvis er det ikke så mange feil som her). Heldigvis er Python ganske hjelpsom med å si ifra.
Her er en typisk feilmelding:
File "errors_2.py", line 7
Input("Hva heter du? ")
NameError: name 'Input' is not defined
Den første linjen forteller oss at feilen ligger i errors_2.py
på linje 7.
Den andre linjen viser oss innholdet til linje 7, der feilen er. Til slutt ser vi hva
slags feil som har oppstått. Her er det en NameError
og Python sier at
Input
(med stor I) ikke finnes. Vi fikser feilen ved å skrive input
med
liten i.
For å fikse alle feilene kan vi kjøre filen på nytt, få en ny feilmelding og fikse den helt til vi ikke får flere feil.
Oppgaver¶
Oppgave 1¶
Du finner Oppgave 1 nedenfor Eksempel 1.
Oppgave 2¶
Du finner Oppgave 2 nedenfor Eksempel 4.
Oppgave 3¶
Du finner Oppgave 3 nedenfor Eksempel 5.
Oppgave 4¶
Du finner Oppgave 4 nedenfor Eksempel 6.
Oppgave 5¶
Du finner Oppgave 5 nedenfor Eksempel 7.
Oppgave 6¶
I denne oppgaven skal vi spørre brukeren om en haiku og siden printe den på en fin måte på skjermen.
I filen uke_02_oppg_6.py
, skriv kode som gjør følgende, i oppgitt rekkefølge:
Spør brukeren om første raden i en haiku. Lagre resultatet i en ny variabel.
Spør brukeren om andre raden i en haiku. Lagre resultatet i en ny variabel.
Spør brukeren om tredje raden i en haiku. Lagre resultatet i en ny variabel. Nå burde du ha tre variabeler.
Beregne lengden av hver variabelen. TIPPS bruk
len()
Finne lengden av den lengste variabelen. TIPPS bruk
max()
Skriv ut en tom linje
Skriv ut toppen av haiku-rammen. Lengden av den er basert på den lengste verdien fra trinn 5, plus fire til. Vi trenger fire til fordi vi har 2 mellomrom og 2
@
(se eksempelkjøring nedenfor). Hvor lenge er denne linjen?Linjnene må være høyrejustert. Hvor mange mellomrom må du legge til i de kortere linjnene?
Skriv ut hele haikuen (bruk variabelene dine fra før).
Skriv ut bunnen av rammen (her kan du gjenbruke toppen).
Eksempelkjøring:
Første raden: What a pleasure to
Andre raden: Right justify a haiku
Tredje raden: As an exercise
@@@@@@@@@@@@@@@@@@@@@@@@@
@ What a pleasure to @
@ Right justify a haiku @
@ As an exercise @
@@@@@@@@@@@@@@@@@@@@@@@@@