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)3.5
4.0
3
1De 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’.
% 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)2 h 15 min
0 1
9De andere operatoren en Pythons volgorde
| Operator | Betekenis | Voorbeeld | Resultaat |
|---|---|---|---|
| + | optellen | 7 + 2 | 9 |
| - | aftrekken | 7 - 2 | 5 |
| * | vermenigvuldigen | 7 * 2 | 14 |
| / | delen (float) | 7 / 2 | 3.5 |
| // | vloerdeling | 7 // 2 | 3 |
| % | rest | 7 % 2 | 1 |
| ** | macht | 7 ** 2 | 49 |
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)14
20
1024
30000De 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))0.30000000000000004
0.3
0 2 2
3 7.0input() 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)Hoe oud ben je? 14
Volgend jaar ben je 15| / | 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 |
- Wat drukt deze code af?
print(9 / 3) - Wat drukt deze code af?
print(17 // 5, 17 % 5) - Wat drukt deze code af?
print(2 + 3 * 4 ** 2) - Wat drukt deze code af?
print(2 ** 3) - Wat drukt deze code af?
print(2 ^ 3)861Een fout
- Wat drukt deze code af?
print(int("20") + 5) - Wat drukt deze code af?
print("20" + "5") - Wat drukt deze code af?
print(int(7.9)) - Wat drukt deze code af?
print(round(2.5)) - 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) - Welke expressie vertelt of n even is?
- n / 2 == 0
- n // 2 == 0
- n % 2 == 0
- n ** 2 == 0
- ‘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.
- / 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