{"id":1395,"date":"2026-04-20T16:07:46","date_gmt":"2026-04-20T14:07:46","guid":{"rendered":"https:\/\/trzykody.pl\/?p=1395"},"modified":"2026-04-20T16:07:48","modified_gmt":"2026-04-20T14:07:48","slug":"python-od-a-do-z-operatory-matematyczne","status":"publish","type":"post","link":"https:\/\/trzykody.pl\/index.php\/2026\/04\/20\/python-od-a-do-z-operatory-matematyczne\/","title":{"rendered":"Python od A do Z &#8211; Operatory matematyczne"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">W codziennej pracy z Pythonem operacje matematyczne s\u0105 jednym z pierwszych element\u00f3w, kt\u00f3re realnie wp\u0142ywaj\u0105 na logik\u0119 program\u00f3w \u2014 od prostych kalkulator\u00f3w po systemy analityczne i algorytmy numeryczne. Operatory arytmetyczne pozwalaj\u0105 wykonywa\u0107 dzia\u0142ania na liczbach ca\u0142kowitych i zmiennoprzecinkowych, ale ich zachowanie w praktyce zale\u017cy od typu danych, kolejno\u015bci dzia\u0142a\u0144 oraz specyfiki implementacji arytmetyki zmiennoprzecinkowej. W kontek\u015bcie nauki programowania i zrozumienia podstaw oblicze\u0144 komputerowych kluczowe jest opanowanie tego, jak dzia\u0142a <strong>Python od A do Z &#8211; Operatory matematyczne.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Spis Tre\u015bci<\/h2><nav><ol><li><a href=\"#podstawowe-operatory-arytmetyczne-w-python-od-a-do-z-operatory-matematyczne-i-ich-dzialanie-w-praktyce\">Podstawowe operatory arytmetyczne w Python od A do Z &#8211; Operatory matematyczne i ich dzia\u0142anie w praktyce<\/a><ol><li><a href=\"#podstawowe-operatory-i-ich-znaczenie\">Podstawowe operatory i ich znaczenie<\/a><\/li><li><a href=\"#znaczenie-operatorow-w-praktyce\">Znaczenie operator\u00f3w w praktyce<\/a><\/li><li><a href=\"#przyklady-dzialania-operatorow\">Przyk\u0142ady dzia\u0142ania operator\u00f3w<\/a><\/li><li><a href=\"#przyklady-kodu-w-roznych-jezykach\">Przyk\u0142ady kodu w r\u00f3\u017cnych j\u0119zykach<\/a><\/li><\/ol><\/li><li><a href=\"#kolejnosc-dzialan-i-zasady-obliczen-w-python-od-a-do-z-operatory-matematyczne-w-kontekscie-priorytetow-operatorow\">Kolejno\u015b\u0107 dzia\u0142a\u0144 i zasady oblicze\u0144 w Python od A do Z &#8211; Operatory matematyczne w kontek\u015bcie priorytet\u00f3w operator\u00f3w<\/a><ol><li><a href=\"#hierarchia-operatorow\">Hierarchia operator\u00f3w<\/a><\/li><li><a href=\"#przyklady-kolejnosci-dzialan\">Przyk\u0142ady kolejno\u015bci dzia\u0142a\u0144<\/a><\/li><li><a href=\"#kod-ilustrujacy-kolejnosc-dzialan\">Kod ilustruj\u0105cy kolejno\u015b\u0107 dzia\u0142a\u0144<\/a><\/li><\/ol><\/li><li><a href=\"#bledy-precyzja-i-pulapki-obliczen-w-python-od-a-do-z-operatory-matematyczne-w-realnych-zastosowaniach\">B\u0142\u0119dy, precyzja i pu\u0142apki oblicze\u0144 w Python od A do Z &#8211; Operatory matematyczne w realnych zastosowaniach<\/a><ol><li><a href=\"#problem-precyzji-liczb-zmiennoprzecinkowych\">Problem precyzji liczb zmiennoprzecinkowych<\/a><\/li><li><a href=\"#dlaczego-pojawiaja-sie-bledy\">Dlaczego pojawiaj\u0105 si\u0119 b\u0142\u0119dy?<\/a><\/li><li><a href=\"#przyklady-kodu-pokazujace-bledy-precyzji\">Przyk\u0142ady kodu pokazuj\u0105ce b\u0142\u0119dy precyzji<\/a><\/li><li><a href=\"#operacje-calkowite-a-stabilnosc-obliczen\">Operacje ca\u0142kowite a stabilno\u015b\u0107 oblicze\u0144<\/a><\/li><li><a href=\"#typowe-pulapki\">Typowe pu\u0142apki<\/a><\/li><li><a href=\"#praktyczne-podejscie-do-stabilnych-obliczen\">Praktyczne podej\u015bcie do stabilnych oblicze\u0144<\/a><\/li><\/ol><\/li><li><a href=\"#operatory-matematyczne-w-python-pelna-lista-i-uporzadkowanie-alfabetyczne\">Operatory matematyczne w Python \u2013 pe\u0142na lista i uporz\u0105dkowanie alfabetyczne<\/a><\/li><li><a href=\"#faq\">FAQ<\/a><ol><li><a href=\"#dlaczego-python-zwraca-dziwne-wyniki-przy-dodawaniu-liczb-zmiennoprzecinkowych\">Dlaczego Python zwraca dziwne wyniki przy dodawaniu liczb zmiennoprzecinkowych?<\/a><\/li><li><a href=\"#czym-rozni-sie-od\">Czym r\u00f3\u017cni si\u0119 \/ od \/\/?<\/a><\/li><li><a href=\"#czy-operator-dziala-szybciej-niz-funkcja-pow\">Czy operator ** dzia\u0142a szybciej ni\u017c funkcja pow()?<\/a><\/li><li><a href=\"#dlaczego-3-2-daje-9-a-nie-9\">Dlaczego -3 ** 2 daje -9, a nie 9?<\/a><\/li><li><a href=\"#czy-modulo-dziala-tak-samo-w-pythonie-c-i-php\">Czy modulo dzia\u0142a tak samo w Pythonie, C i PHP?<\/a><\/li><\/ol><\/li><\/ol><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"podstawowe-operatory-arytmetyczne-w-python-od-a-do-z-operatory-matematyczne-i-ich-dzialanie-w-praktyce\">Podstawowe operatory arytmetyczne w Python od A do Z &#8211; Operatory matematyczne i ich dzia\u0142anie w praktyce<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Operatory matematyczne w Pythonie obejmuj\u0105 zestaw podstawowych dzia\u0142a\u0144 arytmetycznych, kt\u00f3re s\u0105 bezpo\u015brednim odpowiednikiem dzia\u0142a\u0144 znanych z matematyki klasycznej. R\u00f3\u017cnica polega na tym, \u017ce komputer operuje na typach danych, kt\u00f3re mog\u0105 zmienia\u0107 wynik w zale\u017cno\u015bci od kontekstu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"podstawowe-operatory-i-ich-znaczenie\">Podstawowe operatory i ich znaczenie<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Operator<\/th><th>Znaczenie<\/th><th>Python<\/th><th>C<\/th><th>C++<\/th><th>PHP<\/th><\/tr><\/thead><tbody><tr><td>+<\/td><td>dodawanie<\/td><td>a + b<\/td><td>a + b<\/td><td>a + b<\/td><td>$a + $b<\/td><\/tr><tr><td>&#8211;<\/td><td>odejmowanie<\/td><td>a &#8211; b<\/td><td>a &#8211; b<\/td><td>a &#8211; b<\/td><td>$a &#8211; $b<\/td><\/tr><tr><td>*<\/td><td>mno\u017cenie<\/td><td>a * b<\/td><td>a * b<\/td><td>a * b<\/td><td>$a * $b<\/td><\/tr><tr><td>\/<\/td><td>dzielenie rzeczywiste<\/td><td>a \/ b<\/td><td>a \/ b (float)<\/td><td>a \/ b<\/td><td>$a \/ $b<\/td><\/tr><tr><td>\/\/<\/td><td>dzielenie ca\u0142kowite<\/td><td>a \/\/ b<\/td><td>a \/ b (int cast)<\/td><td>a \/ b (int)<\/td><td>intdiv($a,$b)<\/td><\/tr><tr><td>%<\/td><td>modulo<\/td><td>a % b<\/td><td>a % b<\/td><td>a % b<\/td><td>$a % $b<\/td><\/tr><tr><td>**<\/td><td>pot\u0119gowanie<\/td><td>a ** b<\/td><td>pow(a,b)<\/td><td>pow(a,b)<\/td><td>pow($a,$b)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"znaczenie-operatorow-w-praktyce\">Znaczenie operator\u00f3w w praktyce<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dodawanie i odejmowanie dzia\u0142aj\u0105 intuicyjnie, ale problemy zaczynaj\u0105 si\u0119 przy dzieleniu i typach zmiennoprzecinkowych. W Pythonie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/<\/code> zawsze zwraca float<\/li>\n\n\n\n<li><code>\/\/<\/code> obcina cz\u0119\u015b\u0107 u\u0142amkow\u0105<\/li>\n\n\n\n<li><code>%<\/code> zwraca reszt\u0119 z dzielenia<\/li>\n\n\n\n<li><code>**<\/code> realizuje pot\u0119gowanie bez u\u017cycia biblioteki math<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"przyklady-dzialania-operatorow\">Przyk\u0142ady dzia\u0142ania operator\u00f3w<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Operacja<\/th><th>Python<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td>dodawanie<\/td><td><code>7 + 3<\/code><\/td><td>10<\/td><\/tr><tr><td>dzielenie<\/td><td><code>7 \/ 2<\/code><\/td><td>3.5<\/td><\/tr><tr><td>dzielenie ca\u0142kowite<\/td><td><code>7 \/\/ 2<\/code><\/td><td>3<\/td><\/tr><tr><td>modulo<\/td><td><code>7 % 2<\/code><\/td><td>1<\/td><\/tr><tr><td>pot\u0119gowanie<\/td><td><code>2 ** 3<\/code><\/td><td>8<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"przyklady-kodu-w-roznych-jezykach\">Przyk\u0142ady kodu w r\u00f3\u017cnych j\u0119zykach<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Operacja<\/th><th>Python<\/th><th>C<\/th><th>C++<\/th><th>PHP<\/th><\/tr><\/thead><tbody><tr><td>dodawanie<\/td><td><code>a + b<\/code><\/td><td><code>a + b<\/code><\/td><td><code>a + b<\/code><\/td><td><code>$a + $b<\/code><\/td><\/tr><tr><td>dzielenie<\/td><td><code>a \/ b<\/code><\/td><td><code>(float)a \/ b<\/code><\/td><td><code>a \/ b<\/code><\/td><td><code>$a \/ $b<\/code><\/td><\/tr><tr><td>modulo<\/td><td><code>a % b<\/code><\/td><td><code>a % b<\/code><\/td><td><code>a % b<\/code><\/td><td><code>$a % $b<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">W praktyce najwi\u0119cej b\u0142\u0119d\u00f3w wynika z nie\u015bwiadomo\u015bci r\u00f3\u017cnicy mi\u0119dzy <code>\/<\/code> i <code>\/\/<\/code>, szczeg\u00f3lnie przy pracy z indeksami, p\u0119tlami i algorytmami tablicowymi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"kolejnosc-dzialan-i-zasady-obliczen-w-python-od-a-do-z-operatory-matematyczne-w-kontekscie-priorytetow-operatorow\">Kolejno\u015b\u0107 dzia\u0142a\u0144 i zasady oblicze\u0144 w Python od A do Z &#8211; Operatory matematyczne w kontek\u015bcie priorytet\u00f3w operator\u00f3w<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kolejno\u015b\u0107 wykonywania dzia\u0142a\u0144 w Pythonie jest zgodna z klasycznymi zasadami matematycznymi, ale implementacja interpretera powoduje, \u017ce niekt\u00f3re operacje maj\u0105 wy\u017cszy priorytet ni\u017c inne.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"hierarchia-operatorow\">Hierarchia operator\u00f3w<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Poziom<\/th><th>Operator<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>()<\/td><td>nawiasy<\/td><\/tr><tr><td>2<\/td><td>**<\/td><td>pot\u0119gowanie<\/td><\/tr><tr><td>3<\/td><td>+x, -x<\/td><td>znaki jednoargumentowe<\/td><\/tr><tr><td>4<\/td><td>*, \/, \/\/, %<\/td><td>mno\u017cenie i dzielenie<\/td><\/tr><tr><td>5<\/td><td>+, &#8211;<\/td><td>dodawanie i odejmowanie<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"przyklady-kolejnosci-dzialan\">Przyk\u0142ady kolejno\u015bci dzia\u0142a\u0144<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Wyra\u017cenie<\/th><th>Python<\/th><th>Wynik<\/th><th>Wyja\u015bnienie<\/th><\/tr><\/thead><tbody><tr><td><code>2 + 3 * 4<\/code><\/td><td><code>2 + 3 * 4<\/code><\/td><td>14<\/td><td>najpierw mno\u017cenie<\/td><\/tr><tr><td><code>(2 + 3) * 4<\/code><\/td><td><code>(2 + 3) * 4<\/code><\/td><td>20<\/td><td>najpierw nawias<\/td><\/tr><tr><td><code>2 ** 3 * 2<\/code><\/td><td><code>2 ** 3 * 2<\/code><\/td><td>16<\/td><td>pot\u0119gowanie ma wy\u017cszy priorytet<\/td><\/tr><tr><td><code>-3 ** 2<\/code><\/td><td><code>-3 ** 2<\/code><\/td><td>-9<\/td><td>pot\u0119gowanie przed minusem<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"kod-ilustrujacy-kolejnosc-dzialan\">Kod ilustruj\u0105cy kolejno\u015b\u0107 dzia\u0142a\u0144<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>J\u0119zyk<\/th><th>Kod<\/th><\/tr><\/thead><tbody><tr><td>Python<\/td><td><code>result = 2 + 3 * 4<\/code><\/td><\/tr><tr><td>C<\/td><td><code>int result = 2 + 3 * 4;<\/code><\/td><\/tr><tr><td>C++<\/td><td><code>int result = 2 + 3 * 4;<\/code><\/td><\/tr><tr><td>PHP<\/td><td><code>$result = 2 + 3 * 4;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">W praktyce brak nawias\u00f3w w skomplikowanych wyra\u017ceniach jest jedn\u0105 z g\u0142\u00f3wnych przyczyn b\u0142\u0119d\u00f3w logicznych w algorytmach.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bledy-precyzja-i-pulapki-obliczen-w-python-od-a-do-z-operatory-matematyczne-w-realnych-zastosowaniach\">B\u0142\u0119dy, precyzja i pu\u0142apki oblicze\u0144 w Python od A do Z &#8211; Operatory matematyczne w realnych zastosowaniach<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Operacje matematyczne w Pythonie nie zawsze zachowuj\u0105 si\u0119 jak w matematyce teoretycznej. Wynika to z ogranicze\u0144 reprezentacji liczb zmiennoprzecinkowych oraz sposobu implementacji arytmetyki binarnej.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"problem-precyzji-liczb-zmiennoprzecinkowych\">Problem precyzji liczb zmiennoprzecinkowych<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Operacja<\/th><th>Python<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td>0.1 + 0.2<\/td><td><code>0.1 + 0.2<\/code><\/td><td>0.30000000000000004<\/td><\/tr><tr><td>0.3 &#8211; 0.1<\/td><td><code>0.3 - 0.1<\/code><\/td><td>0.19999999999999998<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-pojawiaja-sie-bledy\">Dlaczego pojawiaj\u0105 si\u0119 b\u0142\u0119dy?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Liczby takie jak 0.1 nie maj\u0105 dok\u0142adnej reprezentacji binarnej. Komputer przechowuje je jako przybli\u017cenie.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Problem<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>reprezentacja binarna<\/td><td>brak dok\u0142adnego zapisu 0.1<\/td><\/tr><tr><td>zaokr\u0105glenia<\/td><td>b\u0142\u0105d akumulowany w obliczeniach<\/td><\/tr><tr><td>typ float<\/td><td>ograniczona precyzja<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"przyklady-kodu-pokazujace-bledy-precyzji\">Przyk\u0142ady kodu pokazuj\u0105ce b\u0142\u0119dy precyzji<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>J\u0119zyk<\/th><th>Kod<\/th><\/tr><\/thead><tbody><tr><td>Python<\/td><td><code>print(0.1 + 0.2)<\/code><\/td><\/tr><tr><td>C<\/td><td><code>printf(\"%f\", 0.1 + 0.2);<\/code><\/td><\/tr><tr><td>C++<\/td><td><code>std::cout &lt;&lt; 0.1 + 0.2;<\/code><\/td><\/tr><tr><td>PHP<\/td><td><code>echo 0.1 + 0.2;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"operacje-calkowite-a-stabilnosc-obliczen\">Operacje ca\u0142kowite a stabilno\u015b\u0107 oblicze\u0144<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Operacja<\/th><th>Python<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td>10 \/ 3<\/td><td><code>10 \/ 3<\/code><\/td><td>3.3333333333<\/td><\/tr><tr><td>10 \/\/ 3<\/td><td><code>10 \/\/ 3<\/code><\/td><td>3<\/td><\/tr><tr><td>10 % 3<\/td><td><code>10 % 3<\/code><\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"typowe-pulapki\">Typowe pu\u0142apki<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Problem<\/th><th>Skutek<\/th><\/tr><\/thead><tbody><tr><td>u\u017cycie <code>\/<\/code> zamiast <code>\/\/<\/code><\/td><td>b\u0142\u0119dne indeksy<\/td><\/tr><tr><td>brak nawias\u00f3w<\/td><td>b\u0142\u0119dna kolejno\u015b\u0107 dzia\u0142a\u0144<\/td><\/tr><tr><td>float w por\u00f3wnaniach<\/td><td>fa\u0142szywe wyniki warunk\u00f3w<\/td><\/tr><tr><td>nadmierne pot\u0119gowanie<\/td><td>przepe\u0142nienie warto\u015bci<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"praktyczne-podejscie-do-stabilnych-obliczen\">Praktyczne podej\u015bcie do stabilnych oblicze\u0144<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W systemach finansowych i naukowych cz\u0119sto unika si\u0119 float:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Rozwi\u0105zanie<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>Decimal<\/td><td>dok\u0142adne obliczenia dziesi\u0119tne<\/td><\/tr><tr><td>integer scaling<\/td><td>operacje w groszach zamiast z\u0142otych<\/td><\/tr><tr><td>biblioteki numeryczne<\/td><td>numpy, decimal<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"operatory-matematyczne-w-python-pelna-lista-i-uporzadkowanie-alfabetyczne\">Operatory matematyczne w Python \u2013 pe\u0142na lista i uporz\u0105dkowanie alfabetyczne<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>*<\/code> \u2013 mno\u017cenie, wykonuje iloczyn dw\u00f3ch warto\u015bci liczbowych (np. <code>3 * 4 = 12<\/code>), a tak\u017ce dzia\u0142a na sekwencjach (np. powielanie string\u00f3w lub list w Pythonie).<\/li>\n\n\n\n<li><code>**<\/code> \u2013 pot\u0119gowanie, podnosi liczb\u0119 do okre\u015blonej pot\u0119gi (np. <code>2 ** 3 = 8<\/code>), dzia\u0142a r\u00f3wnie\u017c dla liczb zmiennoprzecinkowych i ujemnych wyk\u0142adnik\u00f3w.<\/li>\n\n\n\n<li><code>+<\/code> \u2013 dodawanie, wykonuje sum\u0119 dw\u00f3ch warto\u015bci liczbowych (np. <code>5 + 2 = 7<\/code>), a w przypadku typ\u00f3w sekwencyjnych \u0142\u0105czy je (np. konkatenacja string\u00f3w).<\/li>\n\n\n\n<li><code>-<\/code> \u2013 odejmowanie, oblicza r\u00f3\u017cnic\u0119 mi\u0119dzy dwiema liczbami (np. <code>10 - 4 = 6<\/code>), mo\u017ce te\u017c oznacza\u0107 negacj\u0119 liczby (np. <code>-5<\/code>).<\/li>\n\n\n\n<li><code>\/<\/code> \u2013 dzielenie rzeczywiste, zwraca wynik w postaci liczby zmiennoprzecinkowej (np. <code>7 \/ 2 = 3.5<\/code>), nawet je\u015bli dzielenie jest \u201er\u00f3wne\u201d.<\/li>\n\n\n\n<li><code>\/\/<\/code> \u2013 dzielenie ca\u0142kowite, zwraca cz\u0119\u015b\u0107 ca\u0142kowit\u0105 wyniku dzielenia, odrzucaj\u0105c cz\u0119\u015b\u0107 u\u0142amkow\u0105 (np. <code>7 \/\/ 2 = 3<\/code>).<\/li>\n\n\n\n<li><code>%<\/code> \u2013 modulo, zwraca reszt\u0119 z dzielenia dw\u00f3ch liczb (np. <code>7 % 2 = 1<\/code>), cz\u0119sto u\u017cywany w sprawdzaniu parzysto\u015bci i cykliczno\u015bci.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-python-zwraca-dziwne-wyniki-przy-dodawaniu-liczb-zmiennoprzecinkowych\">Dlaczego Python zwraca dziwne wyniki przy dodawaniu liczb zmiennoprzecinkowych?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bo liczby float s\u0105 przybli\u017ceniem binarnym i nie wszystkie warto\u015bci dziesi\u0119tne da si\u0119 zapisa\u0107 dok\u0142adnie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czym-rozni-sie-od\">Czym r\u00f3\u017cni si\u0119 <code>\/<\/code> od <code>\/\/<\/code>?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>\/<\/code> zwraca wynik zmiennoprzecinkowy, <code>\/\/<\/code> zwraca wynik ca\u0142kowity z obci\u0119ciem cz\u0119\u015bci u\u0142amkowej.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-operator-dziala-szybciej-niz-funkcja-pow\">Czy operator <code>**<\/code> dzia\u0142a szybciej ni\u017c funkcja pow()?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W wi\u0119kszo\u015bci przypadk\u00f3w tak, bo jest operatorem wbudowanym bez dodatkowego wywo\u0142ania funkcji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-3-2-daje-9-a-nie-9\">Dlaczego <code>-3 ** 2<\/code> daje -9, a nie 9?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bo pot\u0119gowanie ma wy\u017cszy priorytet ni\u017c znak minus.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-modulo-dziala-tak-samo-w-pythonie-c-i-php\">Czy modulo dzia\u0142a tak samo w Pythonie, C i PHP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tak, ale r\u00f3\u017cnice mog\u0105 pojawi\u0107 si\u0119 przy liczbach ujemnych w zale\u017cno\u015bci od implementacji j\u0119zyka.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u0179r\u00f3d\u0142o Foto: Freepik<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W codziennej pracy z Pythonem operacje matematyczne s\u0105 jednym z pierwszych element\u00f3w, kt\u00f3re realnie wp\u0142ywaj\u0105 na logik\u0119 program\u00f3w \u2014 od prostych kalkulator\u00f3w po systemy analityczne i algorytmy numeryczne. Operatory arytmetyczne pozwalaj\u0105 wykonywa\u0107 dzia\u0142ania na liczbach ca\u0142kowitych i zmiennoprzecinkowych, ale ich zachowanie w praktyce zale\u017cy od typu danych, kolejno\u015bci dzia\u0142a\u0144 oraz specyfiki implementacji arytmetyki zmiennoprzecinkowej. W kontek\u015bcie nauki programowania i zrozumienia podstaw oblicze\u0144 komputerowych kluczowe jest opanowanie tego, jak dzia\u0142a Python od A do Z &#8211; Operatory matematyczne. Podstawowe operatory arytmetyczne w Python od A do Z &#8211; Operatory matematyczne i ich dzia\u0142anie w praktyce Operatory matematyczne w Pythonie obejmuj\u0105 zestaw podstawowych dzia\u0142a\u0144 arytmetycznych, kt\u00f3re s\u0105 bezpo\u015brednim odpowiednikiem dzia\u0142a\u0144 znanych z matematyki klasycznej. R\u00f3\u017cnica polega na tym, \u017ce komputer operuje na typach danych, kt\u00f3re mog\u0105 zmienia\u0107 wynik w zale\u017cno\u015bci od kontekstu. Podstawowe operatory i ich znaczenie Operator Znaczenie Python C C++ PHP + dodawanie a + b a + b a + b $a + $b &#8211; odejmowanie a &#8211; b a &#8211; b a &#8211; b $a &#8211; $b * mno\u017cenie a * b a * b a * b $a * $b \/ dzielenie rzeczywiste a \/ b a \/ b (float) a \/ b $a \/ $b \/\/ dzielenie ca\u0142kowite a \/\/ b a \/ b (int cast) a \/ b (int) intdiv($a,$b) % modulo a % b a % b a % b $a % $b ** pot\u0119gowanie a ** b pow(a,b) pow(a,b) pow($a,$b) Znaczenie operator\u00f3w w praktyce Dodawanie i odejmowanie dzia\u0142aj\u0105 intuicyjnie, ale problemy zaczynaj\u0105 si\u0119 przy dzieleniu i typach zmiennoprzecinkowych. W Pythonie: Przyk\u0142ady dzia\u0142ania operator\u00f3w Operacja Python Wynik dodawanie 7 + 3 10 dzielenie 7 \/ 2 3.5 dzielenie ca\u0142kowite 7 \/\/ 2 3 modulo 7 % 2 1 pot\u0119gowanie 2 ** 3 8 Przyk\u0142ady kodu w r\u00f3\u017cnych j\u0119zykach Operacja Python C C++ PHP dodawanie a + b a + b a + b $a + $b dzielenie a \/ b (float)a \/ b a \/ b $a \/ $b modulo a % b a % b a % b $a % $b W praktyce najwi\u0119cej b\u0142\u0119d\u00f3w wynika z nie\u015bwiadomo\u015bci r\u00f3\u017cnicy mi\u0119dzy \/ i \/\/, szczeg\u00f3lnie przy pracy z indeksami, p\u0119tlami i algorytmami tablicowymi. Kolejno\u015b\u0107 dzia\u0142a\u0144 i zasady oblicze\u0144 w Python od A do Z &#8211; Operatory matematyczne w kontek\u015bcie priorytet\u00f3w operator\u00f3w Kolejno\u015b\u0107 wykonywania dzia\u0142a\u0144 w Pythonie jest zgodna z klasycznymi zasadami matematycznymi, ale implementacja interpretera powoduje, \u017ce niekt\u00f3re operacje maj\u0105 wy\u017cszy priorytet ni\u017c inne. Hierarchia operator\u00f3w Poziom Operator Opis 1 () nawiasy 2 ** pot\u0119gowanie 3 +x, -x znaki jednoargumentowe 4 *, \/, \/\/, % mno\u017cenie i dzielenie 5 +, &#8211; dodawanie i odejmowanie Przyk\u0142ady kolejno\u015bci dzia\u0142a\u0144 Wyra\u017cenie Python Wynik Wyja\u015bnienie 2 + 3 * 4 2 + 3 * 4 14 najpierw mno\u017cenie (2 + 3) * 4 (2 + 3) * 4 20 najpierw nawias 2 ** 3 * 2 2 ** 3 * 2 16 pot\u0119gowanie ma wy\u017cszy priorytet -3 ** 2 -3 ** 2 -9 pot\u0119gowanie przed minusem Kod ilustruj\u0105cy kolejno\u015b\u0107 dzia\u0142a\u0144 J\u0119zyk Kod Python result = 2 + 3 * 4 C int result = 2 + 3 * 4; C++ int result = 2 + 3 * 4; PHP $result = 2 + 3 * 4; W praktyce brak nawias\u00f3w w skomplikowanych wyra\u017ceniach jest jedn\u0105 z g\u0142\u00f3wnych przyczyn b\u0142\u0119d\u00f3w logicznych w algorytmach. B\u0142\u0119dy, precyzja i pu\u0142apki oblicze\u0144 w Python od A do Z &#8211; Operatory matematyczne w realnych zastosowaniach Operacje matematyczne w Pythonie nie zawsze zachowuj\u0105 si\u0119 jak w matematyce teoretycznej. Wynika to z ogranicze\u0144 reprezentacji liczb zmiennoprzecinkowych oraz sposobu implementacji arytmetyki binarnej. Problem precyzji liczb zmiennoprzecinkowych Operacja Python Wynik 0.1 + 0.2 0.1 + 0.2 0.30000000000000004 0.3 &#8211; 0.1 0.3 &#8211; 0.1 0.19999999999999998 Dlaczego pojawiaj\u0105 si\u0119 b\u0142\u0119dy? Liczby takie jak 0.1 nie maj\u0105 dok\u0142adnej reprezentacji binarnej. Komputer przechowuje je jako przybli\u017cenie. Problem Opis reprezentacja binarna brak dok\u0142adnego zapisu 0.1 zaokr\u0105glenia b\u0142\u0105d akumulowany w obliczeniach typ float ograniczona precyzja Przyk\u0142ady kodu pokazuj\u0105ce b\u0142\u0119dy precyzji J\u0119zyk Kod Python print(0.1 + 0.2) C printf(&#8222;%f&#8221;, 0.1 + 0.2); C++ std::cout &lt;&lt; 0.1 + 0.2; PHP echo 0.1 + 0.2; Operacje ca\u0142kowite a stabilno\u015b\u0107 oblicze\u0144 Operacja Python Wynik 10 \/ 3 10 \/ 3 3.3333333333 10 \/\/ 3 10 \/\/ 3 3 10 % 3 10 % 3 1 Typowe pu\u0142apki Problem Skutek u\u017cycie \/ zamiast \/\/ b\u0142\u0119dne indeksy brak nawias\u00f3w b\u0142\u0119dna kolejno\u015b\u0107 dzia\u0142a\u0144 float w por\u00f3wnaniach fa\u0142szywe wyniki warunk\u00f3w nadmierne pot\u0119gowanie przepe\u0142nienie warto\u015bci Praktyczne podej\u015bcie do stabilnych oblicze\u0144 W systemach finansowych i naukowych cz\u0119sto unika si\u0119 float: Rozwi\u0105zanie Opis Decimal dok\u0142adne obliczenia dziesi\u0119tne integer scaling operacje w groszach zamiast z\u0142otych biblioteki numeryczne numpy, decimal Operatory matematyczne w Python \u2013 pe\u0142na lista i uporz\u0105dkowanie alfabetyczne FAQ Dlaczego Python zwraca dziwne wyniki przy dodawaniu liczb zmiennoprzecinkowych? Bo liczby float s\u0105 przybli\u017ceniem binarnym i nie wszystkie warto\u015bci dziesi\u0119tne da si\u0119 zapisa\u0107 dok\u0142adnie. Czym r\u00f3\u017cni si\u0119 \/ od \/\/? \/ zwraca wynik zmiennoprzecinkowy, \/\/ zwraca wynik ca\u0142kowity z obci\u0119ciem cz\u0119\u015bci u\u0142amkowej. Czy operator ** dzia\u0142a szybciej ni\u017c funkcja pow()? W wi\u0119kszo\u015bci przypadk\u00f3w tak, bo jest operatorem wbudowanym bez dodatkowego wywo\u0142ania funkcji. Dlaczego -3 ** 2 daje -9, a nie 9? Bo pot\u0119gowanie ma wy\u017cszy priorytet ni\u017c znak minus. Czy modulo dzia\u0142a tak samo w Pythonie, C i PHP? Tak, ale r\u00f3\u017cnice mog\u0105 pojawi\u0107 si\u0119 przy liczbach ujemnych w zale\u017cno\u015bci od implementacji j\u0119zyka. \u0179r\u00f3d\u0142o Foto: Freepik<\/p>\n","protected":false},"author":1,"featured_media":1396,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[],"class_list":["post-1395","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jezyk-programowania"],"_links":{"self":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1395"}],"version-history":[{"count":1,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1395\/revisions"}],"predecessor-version":[{"id":1397,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1395\/revisions\/1397"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media\/1396"}],"wp:attachment":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/categories?post=1395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/tags?post=1395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}