Daugiau
Koks yra % rezultatas Python kalboje?
Ką reiškia %
skaičiavimuose? Atrodo, kad negaliu suprasti, ką jis daro.
Ar jis apskaičiuoja skaičiavimo procentą, pavyzdžiui: 4 % 2
, matyt, yra lygus 0. Kaip?
229
3
Paimta iš http://docs.python.org/reference/expressions.html
1 pavyzdys:
6%2
įvertinama kaip0
, nes dalijant 6 iš 2 ( 3 kartus ) liekanos nėra.2 pavyzdys:
7%2
įvertinama kaip1
, nes dalijant 7 iš 2 ( 3 kartus ) lieka1
.Taigi, apibendrinant galima pasakyti, kad grąžinama dalijimo operacijos liekana arba
0
, jei liekanos nėra. Taigi6%2
reiškia, kad reikia rasti likutį, likusį dalijant 6 iš 2.Tokia išraiška, kaip
x % y
, įvertinama kaipx ÷ y
likutis - techniškai tai yra "modulis", o ne "priminimas", todėl rezultatai gali skirtis, jei lyginate su kitomis kalbomis, kuriose%
yra liekanos operatorius. Yra keletas subtilių skirtumų (jei jus domina praktinės pasekmės, taip pat žr. "Kodėl Python's Integer Division Floors" žemiau). Pirmenybė tokia pati kaip ir operatorių/
(dalybos) ir*
(daugybos).%
taip pat yra (nuvertėjęs) eilutės interpoliavimo operatorius, todėl saugokitės, jei esate atėję iš kalbos su automatiniu tipų atvaizdavimu (pvz., PHP ar JS), kurioje tokia išraiška kaip'12' % 2 + 3
yra teisėta: Python sistemoje tai sukelsTypeError: not all arguments converted during string formatting
(klaida: ne visi argumentai konvertuoti formuojant eilutę), o tai tikriausiai jus gerokai supainios. [atnaujinta Python 3] Vartotojo n00p komentarai:Šiuolaikiniame "Python"
9 / 2
iš tiesų duoda4,5
:[atnaujinimas] Vartotojas dahiya_boy paklausė komentarų sesijoje: Ar galite paaiškinti, kodėl `11 % 5 = 4`` - dahiya_boy Tai keista, ar ne? Jei pabandysite tai padaryti JavaScript:
Taip yra todėl, kad "JavaScript" kalba
%
yra "liekanos" operatorius, o "Python" kalba tai yra "modulio" (laikrodžio matematikos) operatorius.Paaiškinimą galite gauti tiesiogiai iš GvR:
0 >= r > b.
Modulio operatorius, paprastai naudojamas sveikųjų skaičių liekanos dalijimui, tačiau Pythone gali būti naudojamas ir skaičiams su slankiuoju kableliu.
http://docs.python.org/reference/expressions.html