Vad är resultatet av % i Python?
Vad betyder "%" i en beräkning? Jag kan inte komma på vad det gör.
Räknar den ut en procentandel av beräkningen, till exempel: 4 % 2
är tydligen lika med 0. Hur?
229
3
Taget från http://docs.python.org/reference/expressions.html
Exempel 1:
6%2
utvärderas till0
eftersom det inte finns någon rest om 6 divideras med 2 ( 3 gånger ).Exempel 2: **Exempel:
7%2
utvärderas till1
eftersom det finns en rest på1
när 7 divideras med 2 ( 3 gånger ).Så för att sammanfatta det, så returnerar den återstoden av en divisionsoperation, eller
0
om det inte finns någon återstoden. Så6%2
betyder att man hittar resten av 6 dividerat med 2.Ett uttryck som
x % y
utvärderar resten avx ÷ y
- tekniskt sett är det "modulus" istället för "reminder" så resultatet kan bli annorlunda om du jämför med andra språk där%
är restoperatorn. [Det finns några subtila skillnader] (https://rob.conery.io/2018/08/21/mod-and-remainder-are-not-the-same/) (om du är intresserad av de praktiska konsekvenserna se även "Why Python's Integer Division Floors" nedan). Precedensen är densamma som operatörerna/
(division) och*
(multiplikation).%
också den (föråldrade) stränginterpolationsoperatorn, så se upp om du kommer från ett språk med automatisk typbrytning (som PHP eller JS) där ett uttryck som'12' % 2 + 3
är lagligt: i Python kommer det att resultera iTypeError: not all arguments converted during string formatting
, vilket troligen kommer att vara ganska förvirrande för dig. [uppdatering för Python 3] Användarens n00p-kommentarer:I modern Python ger
9 / 2
verkligen4,5
:[uppdatering] Användaren dahiya_boy frågade i kommentarsessionen: Kan du förklara varför
-11 % 5 = 4
- dahiya_boy Detta är konstigt, eller hur? Om du provar detta i JavaScript:Detta beror på att
%
i JavaScript är operatorn "rest" medan det i Python är operatorn "modulus" (klockmatematik).Du kan få [förklaringen direkt från GvR] (http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html):
0 >= r > b.
Modulusoperatorn används vanligtvis för restdivision av heltal, men i Python kan den användas för flyttalstal.
http://docs.python.org/reference/expressions.html