Herfra begynder vi at arbejde i Thonny's øverste vindue.
Her kan vi begynde at lave rigtige programmer, som i eksemplet herunder:
"""
Mit første program
"""
længde = 10
højde = 5
areal_firkant = længde * højde
print(f"Firkantens areal er: {areal_firkant}")
Når du så trykker F5 kører programmet i shell-vinduet
Er det første gang du kører et program skal du gemme det på harddisken. Her har jeg valgt at kalde programmet test.py.
>>> %Run test.py Firkantens areal er: 50
Første linie fortæller hvad programmet hedder og linjerne herunder viser programmets output
Du kan ikke køre programmet før det er gemt på harddisken. Jeg anbefaler dig at gøre følgende:
Nu skal vi til at bruge alt det vi har lært om variabler, input og operatorer
Vi vil lave et program der kan give os forskellige svar alt efter input
Funktioner kan kaldes små programmer i programmet. I dette eksempel har jeg lavet programmet i toppen til en funktion:
def areal_firkant(længde, højde):
print(f"Firkantens areal er {længde*højde}")
areal_firkant(4,5)
areal_firkant(7,8)
>>> %Run test.py Firkantens areal er 20 Firkantens areal er 56
Jeg har altså lavet min helt egen smarte måde at regne firkanters areal ud, så jeg bare skal skrive længden og bredden ind i funktionens parentes. I forhold til eksemplet øverst på siden har jeg reduceret koden fra 4 til 2 linier ... og fremover kan jeg udregne alle de arealer jeg vil.
Hvad var det jeg gjorde
def areal_firkant(længde, højde):
def
fortæller Python at nu kommer der en definitionareal_firkant
er funktionens navn(længde,højde)
er de 2 variabler som funktionen skal brugeprint(f"Firkantens areal er {længde*højde}")
areal_firkant(4,5)
Nogle funktioner skal ikke selv printe sit resultat, men blot levere det videre. Det kan f.eks. være en funktion der laver kvadratal. Se koden herunder:
def kvadrattal(a):
tal = pow(a,2)
return tal
print(kvadrattal(2))
>>> %Run test.py
4
Funktionen returnerer resultatet 2 og når vi så printer kvadrattal(2)
, så printer vi resultatet - altså 4.
Funktioner behøver ikke at have variabler i sig. Funktionen kan også bare starte en eller flere kommandoer.
Det kan f.eks. være en kode der printer kontaktinformationer, som skal stå hver gang programmet melder fejl:
def tekst():
print("""Denne software er lavet af :
Thomas Jensen
fakeuser@fakemail.dk""")
tekst()
>>> %Run test.py Denne software er lavet af : Thomas Jensen fakeuser@fakemail.dk
En tom funktion kan også bestå af en række kommandoer der skal føres hvis noget sker - f.eks. at man klikker på en knap
if-else
bruges når progammet skal køre en kode frem for en anden. Et overblik over koden ser ud som følger:
if [BETINGELSE]:
** Gør noget **
else:
** Gør noget andet **
If - else
er smart at bruge, når man har en enten eller situation, og det bruger man meget i programmering. Det kan f.eks. være når:
Her er et eksempel på et gættespil, hvor brugeren skal gætte et tal. Har brugeren gættet rigtigt skal programmet sige "Godt gættet" og ellers "Det var forkert":
gæt = input("Gæt et tal mellem 1 og 5: ")
if gæt == "4":
print("Godt gættet")
else:
print("Det var forkert")
Her har jeg først gættet på 3 og derefter 4:
>>> %Run test.py Gæt et tal mellem 1 og 5: 3 Det var forkert >>> %Run test.py Gæt et tal mellem 1 og 5: 4 Godt gættet
else
Nogle gange er der flere end to betingelser der skal undersøges. Når der er det kan vi indsætte en elif
.
if [BETINGELSE 1]:
** Gør noget **
elif [BETINGELSE 2]:
** Gør noget andet **
elif [BETINGELSE 3]:
** Gør noget andet **
...
else:
** Gør noget hvis ingen af betingelserne ovenfor er opfyldt **
Her er et eksempel på et program der spørger til personens øjenfarve:
farve = input(""" Hvad farve har dit øje:
- Jeg har brune øjne (brun)
- Jeg har blå øjne (blå)
- Jeg har grønne øjne (grøn)
- Jeg har en anden farve (andet)
Skriv dit svar her: """)
if farve == "brun":
print("\nDu har brune øjne")
elif farve == "blå":
print("\nDu har blå øjne")
elif farve == "grøn":
print("\nDu har grønne øjne")
else:
print("\nDine øjne er hverken brune, blå eller grønne")
Her har jeg kørt programmet 2 gange og først svaret brun og anden gang andet.
>>> %Run test.py Hvad farve har dit øje: - Jeg har brune øjne (brun) - Jeg har blå øjne (blå) - Jeg har grønne øjne (grøn) - Jeg har en anden farve (andet) Skriv dit svar her: brun Du har brune øjne >>> %Run test.py Hvad farve har dit øje: - Jeg har brune øjne (brun) - Jeg har blå øjne (blå) - Jeg har grønne øjne (grøn) - Jeg har en anden farve (andet) Skriv dit svar her: andet Dine øjne er hverken brune, blå eller grønne
Nogle gange skal et program kun gøre noget i helt specielle situationer. Forestil dig et program der skal tænde strømmen til en blæser når temperaturen når over 20°.
Her vil det være nok med følgende linie:
if temp > 20:
start_blæser()
if
bør altid stå for sig selv hvis de betingelser der bliver undersøgt ikke hænger sammen. Tænk på et eksempel hvor koden stiller en masse spørgsmål:
Her vil det give bedst mening at holde tingene helt adskilt i koden, for at det bliver tydeligt at betingelserne intet har med hinanden at gøre - altså:
if alder >= 18:
over_18()
if by = "København":
bopæl_københavn()
if bil = "ja":
har_bil()
Når man læser koden her, så er man ikke i tvivl om at hver af betingelserne udløser hver sine funktioner. Det er tydeligt at de ikke har nogen sammenhæng. Se f.eks. her hvor den er sat på som if - elif - else:
if alder >= 18:
over_18()
elif by = "København":
bopæl_københavn()
elif bil = "ja":
har_bil()
...
Kode skal ikke bare virke ... den skal være til at læse... også for andre end dig selv.
I disse opgaver skal du bruge if-/elif-/elsestrukturer, sammen med operatorer. Der er et overblik over operatorerne herunder.
Operator | Beskrivelse | Eksempel |
---|---|---|
== | Lig med | 5 == 8 → falsk |
> | større end | 5 > 8 → falsk |
< | mindre end | 5 < 8 → sand |
>= | Større end eller lig med | 5 >= 8 → falsk |
<= | Mindre end eller lig med | 5 <= 8 → sand |
!= | Ikke lig med | 5 != 8 → sand |
x and y | Både x og y skal være sand | x=6 ; y=3 (x < 10 and y > 1) → sand |
x or y | Kun en behøver at være sand | x=6 ; y=3 (x == 6 or y == 1) → sand |
Lav en kode der undersøger om man er myndig eller ej (18+)
Lav en kode der undersøger om personen hos DSB er berettiget til et ungdomskort (under 20), et pensionistkort (over 65) eller skal købe en almindelig billet.
På hjemmesiden http://www.erdetfredag.dk/ får du at vide om det er fredag. Lav en lignende kode, hvor svarene er:
HINT: For at få det til lykkes skal du importere modulet strftime fra pakken time. Ved hjælp af den kan man finde:
Dato | |
---|---|
%u | dag i ugen (mandag=1, søndag=7) |
%V | Ugenr: 00-53 (ISO 8601) |
%d | Hvilken dag i måneden |
%m | Månede |
%y | Årstal - 2 cifre (17) |
%Y | Årstal - 4 cifre (2017) |
%D | Dato (Måned/dag/år) |
Tid | |
---|---|
%H | Timetal (0-24) |
%M | Minuttal |
%S | Sekundtal |
%R | Klokken (timer:minutter) |
%T | klokken (timer:minutter:sekunder) |
Eksempel på strftime() kørt på en onsdag:
>>> from time import strftime
>>> strftime("%u")
'3'
Se fuldliste her: https://www.tutorialspoint.com/python/time_strptime.htm
Ændr. koden så den fortæller hvor mange dage der er til fredag.
Lav en kode der fortæller hvor mange timer og minutter der er til du har fri, for hver dag i ugen.
I alle eksemplerne ovenfor forudsætter vi at brugeren gør som vi har bedt om. Altså indtaster tingene korrekt. Det kan vi bare ikke altid regne med at de gør. Derfor skal du nu lære om en metode til at fange fejl, og give brugeren besked tilbage.
Funktionen ser ud som herunder:
try:
Kode der skal køres
except:
Det der skal køres hvis koden under try laver fejl
Et konkret eksempel er f.eks. hvis du du vil have brugeren skal indtaste et heltal - f.eks. antallet af sodavand:
antal = 0
try:
antal = int(input("Antal sodavand: "))
except:
print(f"{antal} er ikke et heltal. Prøv igen!")
Her har jeg kørt koden, og indtastet et ja, 8.0 og 8
>>> %Run test.py Antal sodavand: g 0 er ikke et heltal. Prøv igen! >>> %Run test.py Antal sodavand: 8.0 0 er ikke et heltal. Prøv igen! >>> %Run test.py Antal sodavand: 8 >>>
Læg mærke til 2 ting:
try
Du vil senere lære hvordan denne teknik kan bruges til at spørgsmålet bliver stillet igen.
Vil du tvinge en fejl igennem, så kan det gøres ved: raise Exception
try:
raise Exception
except:
print("Der er fejl i koden")
>>> %Run test.py Der er fejl i koden
Dette kan bruges under test, men kan også være brugbart. Det kan f.eks. være brugbart til at afbryde programmet hvis en bruger på flere forsøg ikke gør hvad han skal (eller må!). I stedet for at brugeren bliver ved med at forsøge sig, så vælger du som programmør at afbryde programmet, og kommer med en beskes om hvor brugeren skal henvende sig for at få hjælp.
Som programmør skal man prøve at forudse den slags problemer, for man skal huske på Murphy's lov: Hvis noget kan gå galt, så vil det gå galt
Skal du finde ud af om en tekststreng findes i en tekststreng kan du bruge:
[TEKSTSTRENG] in [TEKST]
Hvis ordet står i sætningen vil der blive svaret tilbage med True, og hvis ikke False.
Der findes mange forskellige programmeringssprog, og her lærer vi om Python.
Lad os prøve at søge i denne tekst ved hjælp af shell:
>>> tekst = "Der findes mange forskellige programmeringssprog, og her lærer vi om Python."
>>> "Python" in tekst
True
>>> "sprog" in tekst
True
>>> "Java" in tekst
False
Læg mærke til at funktionen finder sprog. Funktionen søger kombinationen af bogstaver ... ikke selve ordet sprog.
Ændr opgaven så du ved hjælp af et input kan få svar på om et ord findes i tekstrengen
Indsæt et større tekst fra nettet og lav søgninger på ord i denne tekst ved hjælp af et brugerinput.