Diskuze: dělení v Python
V předchozím kvízu, Online test znalostí Python 2.7, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Python 2.7, jsme si ověřili nabyté zkušenosti z kurzu.
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).
// 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?
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.
s jedním / je v 3. příkazu.
očekával bych výsledek -2 ...což je opačná hodnota 7 // 3
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.
Dík, už chápu
Zobrazeno 7 zpráv z 7.