Avatar
Tomas Novotny Dis:

Python 3.5.1 (v3.5.1:37a07ce­e5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 7 / 3
2.3333333333333335
>>> 7 // 3
2
>>> -7 / 3

  • 2.3333333333333335

>>> -7 // 3

  • 3

### Můžete mi někdo vysvětlit poslední (4.) příkaz ? proč není 2. a 4. výsledek stejný, jen s opačným znaménkem ? V pythonu začínám, ale toto nějak nechápu...díky

 
Odpovědět 28. srpna 11:50
Avatar
DZetko
Člen
Avatar
DZetko:

Ve 4. příkazu by výsledek měl být asi -2.333333, ale Python vypíše 3. Dochází zde k tomu, že výsledek se automaticky zaokrouhluje na negativnější číslo. Toto chování bylo normální v Pythonu 2 (i při použítí / místo // ). V Pythonu 3 toto bylo odstraněno, ale stále je možné toho dosáhnout použitím // (jako v tvém 4. příkazu). :-)

Editováno 28. srpna 12:03
 
Nahoru Odpovědět 28. srpna 12:02
Avatar
Tomas Novotny Dis:

// ve 4. příkazu je celočíselné dělení, tedy by měl být výsledek -2, aspoň pokud tomu rozumím dobře - stejně jako v celočíselném 2. příkazu.
Ty říkáš, že pokud je výsledek záporný a dělíš celočíselně, tak python zaokrouhluje "nahoru" ? Není to divny?

 
Nahoru Odpovědět 28. srpna 12:15
Avatar
DZetko
Člen
Avatar
Odpovídá na Tomas Novotny Dis
DZetko:

Není to úplně divné, když ve 4. příkazu používáš na dělení //, protože tak Python 3 funguje. Zkus 4. příkaz s jedním / místo // (tako -7/3). Pak bys měl dostat očekávaný výsledek. Sám jsem to teď otestoval. :-)

Editováno 28. srpna 12:21
 
Nahoru Odpovědět 28. srpna 12:21
Avatar
Tomas Novotny Dis:

s jedním / je v 3. příkazu.
očekával bych výsledek -2 ...což je opačná hodnota 7 // 3

 
Nahoru Odpovědět 28. srpna 12:35
Avatar
coells
Redaktor
Avatar
Odpovídá na Tomas Novotny Dis
coells:

Protože matematika :-)
Chceš vyřešit celočíselnou rovnici -7 = p * 3 + q, kde 0 <= q < 3
Tomu se říká celočíselné okruhy a rovnice má jediné řešení.

Řešení v pythonu:

p = -7 // 3
q = -7 % 3
print(p, q, p * 3 + q)  # -3 2 -7

Takže výsledek -3 dává smysl stejně, jako bys čekal, že python pro 1+1 odpoví 2.
Rozdíl je jen v tom, že tenhle typ matematiky se učí až v algebře.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 28. srpna 13:25
Avatar
Tomas Novotny Dis:

Dík, už chápu :-)

 
Nahoru Odpovědět 28. srpna 14:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.