Lisää
Mikä on %:n tulos Pythonissa?
Mitä tarkoittaa %
laskutoimituksessa? En saa selville, mitä se tekee.
Laskeeko se prosenttiluvun esimerkiksi seuraavasti: 4 % 2
on ilmeisesti yhtä kuin 0. Miten?
229
3
Otettu osoitteesta http://docs.python.org/reference/expressions.html
Esimerkki 1:
6%2
on0
, koska jäännöstä ei jää, jos 6 jaetaan 2:lla ( 3 kertaa ).Esimerkki 2:
7%2
on1
, koska jäännös on1
, kun 7 jaetaan 2:lla ( 3 kertaa ).Yhteenvetona voidaan siis sanoa, että se palauttaa jako-operaation jäännöksen tai
0
, jos jäännöstä ei ole. Joten6%2
tarkoittaa, että jaetaan 6:n jäännös jaettuna 2:lla.Lauseke kuten
x % y
onx ÷ y
:n jäännös - no, teknisesti se on "moduuli" eikä "jäännös" joten tulokset voivat olla erilaisia, jos verrataan muihin kieliin, joissa%
on jäännösoperaattori. On joitakin hienovaraisia eroja (jos olet kiinnostunut käytännön seurauksista, katso myös "Why Python's Integer Division Floors" alla). Etusija on sama kuin operaattoreilla/
(jako) ja*
(kertolasku).%
on myös (vanhentunut) merkkijonojen interpolointioperaattori, joten varo, jos tulet kielestä, jossa on automaattinen tyypinvalinta (kuten PHP tai JS), jossa lauseke'12' % 2 + 3
on laillinen: Pythonissa se johtaaTypeError: not all arguments converted during string formating
, mikä on luultavasti melko hämmentävää sinulle. [päivitys Python 3:lle] Käyttäjän n00p-kommentit:Nykyaikaisessa Pythonissa
9 / 2
tuottaa todellakin4.5
:[päivitys] Käyttäjä dahiya_boy kysyi kommentti-istunnossa:
Tämä johtuu siitä, että JavaScriptissä
%
on "jäännös" -operaattori, kun taas Pythonissa se on "moduuli" (kellomatematiikka) -operaattori.Saat selityksen suoraan GvR:stä:
0 >= r > b.
Modulus-operaattoria käytetään yleensä kokonaislukujen jäännösjakoon, mutta Pythonissa sitä voidaan käyttää myös liukuluvuille.
http://docs.python.org/reference/expressions.html