In de afgelopen twee lessen heb je de volgende methodes in Python geleerd:
a+b a plus b
a-b a min b
a*b a keer b
a**b a tot de macht b
a/b a gedeeld door b
a//b a gedeeld door b naar beneden afgerond op gehelen
a%b a modulo b (de rest bij deling van a door b)
a == b Dit test of a en b dezelfde waarde hebben.
a > b Dit test of a een grotere waarde dan b heeft.
a >= b Dit test of a groter of gelijk is aan b.
a < b Dit test of a kleiner dan b is.
a <= b Dit test of a kleiner of gelijk aan b is.
a != b Dit test of a ongelijk aan b is.
A or B Uitkomst is waar als A en/of B waar is.
A and B Uitkomst is waar als zowel A als B waar is.
print(a) Dit print a op het scherm van de gebruiker.
print(a,b) Print a en b met een spatie ertussen.
input() Dit leest een input in.
range(a,b,c) Dit maakt een lijst van a tot b met steeds c verschil.
range(a,b) Dit maakt een lijst van alle getallen vanaf a tot b.
range(b) Dit maakt een lijst van alle getallen vanaf 0 tot b.
int() Dit maakt van een waarde een geheel getal.
float() Dit maakt van een waarde een kommagetal.
str() Dit maakt van een waarde een stukje tekst.
for a in b: Dit herhaalt de ingesprongen regels voor iedere waarde a uit de lijst b.
In deze les gaan we een tweede manier leren om een loop uit te voeren en leren we het if-statement. We beginnen echter met verder te oefenen met de commando’s die we vorige keer geleerd hebben.
Opdracht 1: (moeilijkheid 1.1)
Maak de opdracht Framtidar FIFA op Kattis. Deze opdracht gaat over een spel dat in 2022 is uitgekomen. Als input krijg je op regel 1 hoeveel updates
er van het spel in totaal uitgekomen zijn. Op regel 2 krijg je hoeveel updates
het spel per jaar krijgt. Gegarandeerd wordt dat
een geheel veelvoud van
is. Geef als output welk jaar het op basis van deze gegevens nu is.
Voorbeeldinput:
30
5
Voorbeeldoutput:
2028
Uitwerking:
In deze opdracht moet je de eerste input door de tweede delen en de uitkomst optellen bij 2022. Let er hierbij op dat je // gebruikt, zodat je blijft werken met gehele getallen. Een voorbeeld van een goed antwoord is:
updates = int(input())
perjaar = int(input())
print(2022+updates// perjaar)
Opdracht 2: (moeilijkheid 1.2)
Maak de opdracht Echo Echo Echo op Kattis. Hierin krijg je als input een woord. Als output moet je dit woord op één regel drie keer achter elkaar printen met spaties ertussen.
Voorbeeldinput:
mollen
Voorbeeldoutput:
mollen mollen mollen
Uitwerking:
In deze opdracht kun je gebruik maken van het print(
)-commando wat we eind vorige les geleerd hebben. Hiermee worden
en
geprint met een spatie ertussen. In dit geval moet het woord uit de input drie keer geprint worden met spaties ertussen en dat kan dus met print(woord, woord, woord).
woord = input()
print(woord, woord, woord)
Opdracht 3: (moeilijkheid 1.3)
Maak de opdracht Bitte ein Bit op Kattis. Als input krijg je een string die uit alleen enen en nullen bestaat. Als output moet je een cijfer geven dat minstens één keer voorkomt in de string.
Voorbeeldinput:
00000000
Voorbeeldoutput:
0
Uitwerking:
Een manier om dit op te lossen is door altijd het laatste cijfer als antwoord te geven. Hiervoor lees je de input in als getal en krijg je het laatste cijfer door modulo 10 te doen.
getal = int(input())
print(getal % 10)
Opdracht 4: (moeilijkheid 1.4)
Maak de opdracht Diggy Hole op Kattis. Dit probleem gaat over het beroemde raadsel waarbij gegeven wordt dat vier werkers vier uur bezig zijn met het graven van vier gaten. De vraag is dan hoe lang twee werkers bezig zijn met het graven van een half gat. Het antwoord is één uur. De aannamen hierachter zijn dat een werker schijnbaar vier uur nodig heeft voor het graven van één gat en het met twee werkers twee keer zo snel gaat en een half gat de helft van de tijd kost.
In deze puzzel moet je dit probleem oplossen waarbij
werkers
uur doen over
gaten en de vraag is hoeveel uur
werkers over
gaten doen. De input van dit probleem bestaat uit 5 gehele getallen die in de volgorde
,
,
,
en
op vijf regels staan. Als antwoord moet je het aantal uur geven. Dat kan een kommagetal zijn.
Voorbeeldinput:
4
4
4
3
2
Voorbeeldoutput:
2.66666666666666667
Uitwerking:
Ik begin te redeneren met als basis de tijd
uur. Vervolgens beredeneer ik dat als er in plaats van
personen er
zijn het
keer zo lang duurt (als je dit moeilijk vindt met variabelen, vul dan getallen in – als je in plaats van
personen je
personen hebt, duurt het
keer zo lang). Op dezelfde manier beredeneren we dat als je
gaten wilt graven in plaats van
gaten dit
keer zo lang duurt. Hiermee wordt het eindantwoord
.
n = int(input())
h = int(input())
x = int(input())
m = int(input())
y = int(input())
print(n/m*y/x*h)
Opdracht 5: (moeilijkheid 1.5)
Maak de opdracht Upprödun op Kattis. In de eerste regel van de input staat een geheel getal
. Dit geeft aan hoeveel klassen er zijn. Op de tweede regel staat een geheel getal
wat aangeeft hoeveel leerlingen er zijn. Als output moet je
regels geven waarbij in totaal
* staan. Deze sterretjes staan voor leerlingen en moet je zo gelijkmatig over de klassen verdelen. Als het niet mooi uitkomt, geef je de laatste klassen een leerling extra.
Voorbeeldinput:
4
14
Voorbeeldoutput:
***
***
****
****
Uitwerking:
We kunnen 10 sterretjes op een regel printen, met print(“*” * 10). Daarbij is het aantal sterretjes op de eerste regel natuurlijk gelijk aan het aantal kinderen gedeeld door het aantal klassen naar beneden afgerond. Dat is kinderen // klassen. Vervolgens halen we het aantal kinderen dat we in de eerste klas gestopt hebben af van het aantal kinderen dat we nog moeten verdelen over de overige klassen. Het aantal klassen dat we nog moeten vullen is ook één kleiner. Daarna kunnen we op dezelfde manier bepalen hoeveel kinderen er in de volgende klas zitten.
Dat levert de volgende code op:
klassen = int(input())
kinderen = int(input())
klassen_over = klassen
kinderen_over = kinderen
for i in range(klassen):
klasgrootte = (kinderen_over)//klassen_over
print("*" * klasgrootte)
kinderen_over -= klasgrootte
klassen_over -= 1