Zagadka Pythonowa #4

Zagadka Pythonowa #4

20/4 == 22//4
5/2 == 5//2
18/3 == 18//3

Co tu równe, a co nierówne?

20/4 == 22//4

Powyższe wyrażenie jest prawdziwe. Ale dlaczego? Zacznijmy od różnicy między dzieleniem zmiennoprzecinkowym, a dzieleniem z resztą.

Dzielenie zmiennoprzecinkowe

Pomimo hucznego określenia, to właśnie to dzielenie, które wykonujemy na co dzień najczęściej. Jeśli podzielimy 15 zł po połowie, to dostaniemy 7,5 zł. Jeśli podzielimy 1 kg mąki na 4 części to dostaniemy 0,25 kg w każdej. Generalnie chcemy, żeby nasze części były dokładnie równe, nie martwimy się o to, czy są całkowite.

Dzielenie z resztą

Gdy pakujemy się na wycieczkę i kupimy 5 jabłek, to rozdzielając na 2 osoby każda powinna dostać 2,5 jabłka. Ale na wycieczce niewygodnie jest nam z przekrojonym jabłkiem, więc lepiej podzielić tutaj z resztą. Każda osoba dostanie po 2 całe jabłka. To jedno pozostałe, jest naszą resztą ('modulo').

Jak ją zadysponujemy to już osobna historia, ale w wielu przypadkach chcemy zrobić z nią coś innego niż z rozdzielonymi częściami.

Wracając do naszych pythonowych rozważań:

15/2

jest dzieleniem zmiennoprzecinkowym, czyli z 15 zł dostajemy 2 razy 7,5 zł.

A przy dzieleniu z resztą:

5 // 2

Tutaj dostaniemy 2. Żeby uzyskać naszą resztę, używamy innego operatora i wykonujemy dzielenie modulo:

5 % 2

Dostając wartość 1.

20/4 == 22//4
20/4 # 5.0 - typ float
22//4 # 5 - typ int

Przy porównywaniu danych, następuje automatyczne rzutowanie typów, co powoduje, że wartości są sobie równe.

5/2 == 5//2

False

5/2 == 5//2
5/2 # 2.5 - typ float
5//2 # 2 - typ int

Wartości nie są sobie równe.

18/3 == 18//3

True

18/3 == 18//3
18/3 # 6.0 - typ float
18//3 # 6 - typ int

Wartości równe. Całość jest prawdziwa.

Jeśli zagadki Ci się podobają, ale nie chcesz przegapić kolejnych - śledź bloga na Facebooku, Instagramie lub w RSSach. Kolejne zagadki co wtorek!

0 Komentarze