Rozdział 4 · Python lubi liczby
Dzielenie: /, //, % i divmod()
Trzy powiązane operatory dzielenia — i dlaczego dzielenie ujemnych liczb całkowitych nie działa tak, jak się wydaje na pierwszy rzut oka.
W dzieleniu w Python faktycznie są trzy powiązane, ale różne operatory — i mylenie ich jest jednym z najczęstszych błędów u początkujących.
17 cukierków dla 5 dzieci
Wyobraźmy sobie zadanie: mamy 17 cukierków i dzielimy je równo między 5 dzieci.
🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬
konfety.py
candies = 17
children = 5
print(candies / children) # 3.4 — dokładne dzielenie ułamkowe
print(candies // children) #3 – 3 cukierki dla każdego dziecka
print(candies % children) #2 – 2 cukierki pozostawione nierozdanymi
Każde dziecko otrzymuje candies // children całe cukierki, i
candies % children to, ile zostało „zostało”
divmod_demo.py
print(divmod(17, 5)) # (3, 2)
Trochę głębiej: Negatywny podział floor-
Z liczbami ujemnymi // zachowuje się inaczej niż „po prostu
odrzuć część ułamkową” na bok, minus
nieskończoność (floor):
otricatelnoe.py
print(-7 // 3) #-3 zamiast -2
print(-7 % 3) # 2
Dlaczego to, a nie inaczej
// w Python definiuje się jako „floor division”Praktyka: dzielenie, reszta i divmod()
interaktywny laptop bezpośrednio w przeglądarce – w tym negatywny floor-division