edubun
Nederlands

Getallen en rekenen

In Python 3 geeft 7 / 2 de waarde 3.5, 7 // 2 geeft 3 en 7 % 2 geeft de rest 1.

Vier delingen om eerst te voorspellen

Dek de uitvoer hieronder af en schrijf op wat je voor elke regel verwacht. De meeste mensen hebben de eerste goed en minstens één andere fout. Met die verkeerde voorspelling begin je dit hoofdstuk.

print(7 / 2)
print(8 / 2)
print(7 // 2)
print(7 % 2)
Uitvoer
3.5
4.0
3
1

De tweede regel verrast. 8 / 2 is precies 4, maar Python drukt 4.0 af. Dat komt doordat / altijd een float geeft, een getal met een decimale punt, ook bij een deling zonder rest. Voor gehele deling heeft Python een aparte operator, //, vloerdeling genoemd. Die deelt en rondt dan omlaag af naar het gehele getal eronder. De bijbehorende operator % geeft de overblijvende rest. Samen beantwoorden ze de basisschoolvraag ‘7 gedeeld door 2 is 3, rest 1’.

Drie sprongen van 2 passen in 7, met 1 over: 7 // 2 is het aantal sprongen, 7 % 2 wat overblijft.

% komt vaker voor dan je verwacht. Een getal is even als n % 2 gelijk is aan 0. Het laatste cijfer is n % 10. 135 minuten omzetten in uren en minuten is 135 // 60 uur en 135 % 60 minuten.

minutes = 135
print(minutes // 60, "h", minutes % 60, "min")
print(2026 % 2, 2027 % 2)
print(4589 % 10)
Uitvoer
2 h 15 min
0 1
9

De andere operatoren en Pythons volgorde

OperatorBetekenisVoorbeeldResultaat
+optellen7 + 29
-aftrekken7 - 25
*vermenigvuldigen7 * 214
/delen (float)7 / 23.5
//vloerdeling7 // 23
%rest7 % 21
**macht7 ** 249

Python volgt dezelfde volgorde als in de wiskundeles: eerst **, dan *, /, // en %, dan + en -, binnen elke groep van links naar rechts. Haakjes gaan voor alles, dus voeg ze bij twijfel toe. Ze kosten niets en maken de bedoeling voor de volgende lezer duidelijk.

print(2 + 3 * 4)
print((2 + 3) * 4)
print(2 ** 10)
print(10_000 * 3)
Uitvoer
14
20
1024
30000

De laatste regel toont een klein hulpmiddel: in Python mogen onderstrepingstekens in lange getallen, dus 10_000 is beter leesbaar dan 10000. Ze worden bij het berekenen genegeerd en verschijnen niet in de uitvoer. Komma's kunnen zo niet gebruikt worden, want een komma betekent al ‘volgende waarde’.

Kommagetallen worden binair opgeslagen, dus sommige antwoorden wijken iets af

Probeer 0.1 + 0.2. De Python-handleiding wijdt een heel hoofdstuk aan waarom het antwoord 0.30000000000000004 is en niet 0.3. Floats worden binair opgeslagen en 0.1 heeft geen exacte binaire vorm, zoals 1/3 geen exacte decimale vorm heeft. De fout is miniem en round() verbergt die bij het afdrukken. Let op: round() rondt een exacte halve af naar de even buur. De pagina over de ingebouwde functies geeft round(0.5) als 0 en round(1.5) als 2. Voor geld in hele won of hele centen bewaar je de bedragen als int; dan heb je het probleem helemaal niet.

print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
print(round(0.5), round(1.5), round(2.5))
print(int(3.99), float(7))
Uitvoer
0.30000000000000004
0.3
0 2 2
3 7.0

input() geeft altijd een string

input() toont een prompt, wacht tot de gebruiker iets typt en op Enter drukt, en geeft de invoer als string terug. Zelfs als iemand 15 typt krijg je "15", tekst. Zet die met int() of float() om voor rekenwerk. int() op een float kapt het decimale deel af in plaats van af te ronden, dus int(3.99) is 3.

age = input("Hoe oud ben je? ")
next_year = int(age) + 1
print("Volgend jaar ben je", next_year)
Uitvoer
Hoe oud ben je? 14
Volgend jaar ben je 15
In het voorbeeld hierboven is 14 de gebruikersinvoer. Het programma zelf bevat het getal 14 niet.
/Deling die altijd een float geeft: 8 / 2 is 4.0
//Vloerdeling: 7 // 2 is 3
%Rest: 7 % 2 is 1
**Macht: 2 ** 3 is 8
int()Maakt van "15" of 3.9 een geheel getal (15, 3)
input()Leest één getypte gebruikersregel als string
round(x, n)Rondt af op n decimalen; exacte helften naar de even kant
  1. Wat drukt deze code af?
    print(9 / 3)
  2. Wat drukt deze code af?
    print(17 // 5, 17 % 5)
  3. Wat drukt deze code af?
    print(2 + 3 * 4 ** 2)
  4. Wat drukt deze code af?
    print(2 ** 3)
  5. Wat drukt deze code af?
    print(2 ^ 3)
    • 8
    • 6
    • 1
    • Een fout
  6. Wat drukt deze code af?
    print(int("20") + 5)
  7. Wat drukt deze code af?
    print("20" + "5")
  8. Wat drukt deze code af?
    print(int(7.9))
  9. Wat drukt deze code af?
    print(round(2.5))
  10. Een broodje kost 3500 won en je hebt 10 000 won. Wat drukt deze code af?
    won = 10000
    price = 3500
    print(won // price, won % price)
  11. Welke expressie vertelt of n even is?
    • n / 2 == 0
    • n // 2 == 0
    • n % 2 == 0
    • n ** 2 == 0
Veelgemaakte fouten
  • ‘2 ^ 3 is 8.’ In Python is ^ een bitsgewijze operator en 2 ^ 3 is 1. Machten gebruiken **, dus 2 ** 3 is 8. Het programma werkt zonder foutmelding, waardoor deze fout lastig te vinden is.
  • ‘input() geeft een getal als ik een getal typ.’ Het geeft altijd een string. "14" + 1 stopt met TypeError: can only concatenate str (not "int") to str. Zet eerst om met int(input(...)).
  • ‘0.1 + 0.2 == 0.3 is True.’ Het is False, omdat 0.1 + 0.2 gelijk is aan 0.30000000000000004. Vergelijk afgeronde waarden, zoals round(0.1 + 0.2, 2) == 0.3, of tel hele eenheden (won, centen) met int.
Voor de docentBegin met voorspellen en laat de verrassing 4.0 het werk doen. Leerlingen die deling met rest uit de basisschool kennen begrijpen // en % snel zodra je ze zo noemt. Toon de float-afrondingsfout eenmaal zonder er lang bij stil te staan; de belangrijke gewoonte is geld als gehele getallen bewaren. round(2.5) geeft 2, in strijd met afronden uit de wiskundeles, dus verwacht vragen en verwijs naar de documentatie in plaats van te discussiëren. De input()-omzetfout komen leerlingen het vaakst in hun eerste projecten tegen.
Belangrijkste punten
  • / geeft altijd een float; // het gehele quotiënt; % de rest.
  • ** is machtsverheffen; ^ niet.
  • Volgorde: haakjes, **, dan * / // % en dan + -.
  • 0.1 + 0.2 is 0.30000000000000004; bewaar geld als int.
  • input() geeft een string terug; zet om met int() of float().
Bronnen van deze cursus (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Geraadpleegd: 2026-10-19