Was ist das Ergebnis von % in Python?
Was bedeutet die %
in einer Berechnung? Ich kann nicht scheinen, um herauszufinden, was es tut.
Funktioniert es aus einem Prozent der Berechnung für Beispiel: 4 % 2
ist offenbar gleich 0 ist. Wie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entnommen http://docs.python.org/reference/expressions.html
Beispiel 1:
6%2
ausgewertet0
weil es keinen Rest, wenn 6 geteilt durch 2 ( 3 mal ).Beispiel 2:
7%2
ausgewertet1
denn es gibt einen Rest von1
wenn 7 geteilt durch 2 ( 3 mal ).So zusammenzufassen, dass, es gibt den Rest einer divisionsoperation, oder
0
wenn es kein Rest. So6%2
Mittel zu finden, die den Rest der 6 durch 2 geteilt.- 21 % 4
3 in Python.recursive substraction
Sache ist im Grunde die definition der division :x/y
bedeutethow much time can you fit y in x ?
oder in anderen Worten:how much time can you subtract y to x without falling below 0
...Etwas off-topic, die
%
ist auch bei der string-Formatierung wie%=
zu ersetzen Sie die Werte in einen string:Wieder off-topic, aber es scheint ein wenig dokumentiertes feature, das ich eine Weile brauchte, um die Spur, und ich dachte, es war in Bezug auf die Pythons modulo-Berechnung, für die diese Seite SO Reihen hoch.
%
- operator wurde gewählt, weil es sowohl die Prozent-Bezeichner verwendet, die innerhalb der Zeichenfolge selbst.Dem modulo ist eine mathematische operation, manchmal beschrieben als "clock-Arithmetik." Ich finde das beschreibt es einfach als ein Rest ist irreführend und verwirrend, weil es Masken der wirkliche Grund ist, es ist so viel verwendet in computer science. Es ist wirklich verwendet werden, um wrap-around-Zyklen.
Denken Sie an eine Uhr: nehmen Sie an, Sie betrachten eine Uhr, bei "Militär" - Zeit, wo die Reihe der Zeiten von 0:00 - 23.59. Nun, wenn Sie wollte, dass etwas passieren jeden Tag um Mitternacht, würden Sie wollen, dass die aktuelle Zeit mod 24 zu null werden:
if (Stunden % 24 == 0):
Können Sie denken alle Stunden in die Geschichte einwickeln um einen Kreis von 24 Stunden über und über und die aktuelle Stunde des Tages ist, dass unendlich lange Zahl mod 24. Es ist ein viel tiefgreifenderes Konzept als nur ein Rest, es ist eine mathematische Methode zum Umgang mit Zyklen und es ist sehr wichtig in der informatik. Es wird auch verwendet, um wrap-around-arrays, so dass Sie erhöhen den index, und verwenden Sie das Modul zu wickeln, zurück zum Anfang, nachdem Sie erreichen das Ende des Arrays.
a % b = a - b * floor(a/b)
Einen Ausdruck wie
x % y
wertet der Rest derx ÷ y
. Rangfolge ist die gleiche wie die Betreiber/
(division) und*
(Multiplikation).Python gotcha: abhängig von der Python-version, die Sie verwenden,
%
ist auch die (veraltete) string-interpolation operator, so watch out, wenn Sie aus einer Sprache mit automatischer Typumwandlung (wie PHP oder JS), wo ein Ausdruck wie'12' % 2 + 3
legal ist: in Python wird das ResultatTypeError: not all arguments converted during string formatting
welche wahrscheinlich wird ziemlich verwirrend für Sie.[update für Python 3]
Benutzer n00p Kommentare:
Um genau zu sein, integer-division benutzt werden, die standardmäßig in Python 2 (wohlgemerkt, diese Antwort ist älter als mein junge, ist schon in der Schule):
In Python 3 jetzt
9 /2
Ergebnisse4.5
in der Tat, aber beachten Sie die original-Antwort ist sehr alt.Python - Basic-Operatoren
http://www.tutorialspoint.com/python/python_basic_operators.htm
a = 10 und b = 20
b % a = 0
In den meisten Sprachen % ist verwendet für Modul. Python ist keine Ausnahme.
% Modulo-operator kann ebenfalls verwendet werden, um Druck-strings (wie in C) definiert, die sich auf Google https://developers.google.com/edu/python/strings.
Dieser scheint etwas off-topic, aber Es wird sicherlich jemand helfen.
Da gibt es auch eine nützliche built-in-Funktion aufgerufen
divmod
:x % y
berechnet den Rest der divisionx
geteilt durchy
wo der quotient eine Ganzzahl ist. Der Rest hat die Zeichen dery
.Auf Python 3 die Berechnung ergibt
6.75
; dies ist, weil die/
hat eine echte division, nicht integer-division wie (standardmäßig) auf Python 2. Auf Python 21 /4
gibt 0 als Ergebnis wird abgerundet.Die integer-division durchgeführt werden kann, auf Python 3 zu, mit
//
operator, so um die 7 als Ergebnis, können Sie Folgendes ausführen:Außerdem können Sie den Python style division auf Python 2, nur durch hinzufügen der Zeile
als die ersten Quellcode-Zeile in jeder Quellcode-Datei.
#
ist für Kommentare und//
ist ein operator.Modulo-operator, er wird für die Rest-division auf Ganzzahlen, in der Regel, aber in Python kann verwendet werden, für floating-point-zahlen.
http://docs.python.org/reference/expressions.html
Es ist ein modulo-operation, außer wenn es ein Altmodischer C-Stil-string-Formatierung operator, keine modulo-operation. Sehen hier für details. Sie werden sehen, eine Menge von dieser in bestehenden code.
Sich bewusst sein, dass
sogar mit den Klammern Ergebnisse in 6.75 statt 7 wenn Sie für die Berechnung in Python 3.4.
- Und die ' /' - operator ist nicht ganz leicht zu verstehen, zu (python2.7): try...
Dies ist ein bisschen off-topic hier, aber sollte berücksichtigt werden, wenn die Bewertung der oben genannten Ausdruck 🙂
(1)+(0)-(0.25)+(6)
.Ist es, wie in vielen C-ähnlichen Sprachen, der Rest, oder modulo-operation. Finden Sie die Dokumentation für numerische Datentypen — int, float, long, complex.
Modulo - Teilt den linken Operanden durch den rechten Operanden und gibt Rest.
Wenn es hilft:
... und so weiter.
War es schwer für mich zu leicht finden, die spezifische Anwendungsfälle für die Verwendung von % online ,z.B. warum tust Bruch modulo-division oder einer negativen division modulus Ergebnis in der Antwort, dass es funktioniert. Hoffe, das hilft klären Fragen wie diese:
Modulo-Division Im Allgemeinen:
Modulo-division liefert den Rest einer mathematischen division. Es ist tut es wie folgt:
Sagen, wir haben eine Dividende von 5 und Teiler von 2, die folgende Teilung Betrieb wäre (gleichgesetzt x):
Den ersten Schritt in die modulo-Berechnung ist die Durchführung von integer-division:
x_int = 5 //2 ( integer-division in python verwendet den doppelten Schrägstrich)
x_int = 2
Nächsten, die Ausgabe von x_int ist, multipliziert mit dem divisor:
x_mult = x_int * divisor
x_mult = 4
Schließlich die Dividende abgezogen wird, die x_mult
Dividende - x_mult = 1
Den modulo-operation ,also 1 zurück:
5 % 2 = 1
Anwendung der E-Modul auf einen Bruchteil
Die Berechnung des E-Modul bei einem Bruchteil ist derselbe wie oben; jedoch, es ist wichtig zu beachten, dass die integer-division ergibt einen Wert von null, wenn der divisor größer als der dividend:
Den integer-division in 0 während die, daher, wenn Schritt 3 ausgeführt wird, wird der Wert der Dividende erfolgt durch (subtrahiert null):
Anwendung der modulo einer negativen
Boden Teilung kommt, bei dem der Wert der Ganzzahl-division, gerundet auf die niedrigste Ganzzahl Wert:
Deshalb, wenn Sie tun, integer-division, die Sie erhalten möglicherweise ein anderes Ergebnis, als Sie erwarten!
Anwendung der oben genannten Schritte auf der folgenden dividend und divisor zeigt der E-Modul-Konzept:
Schritt 1: Anwenden integer-division
Schritt 2: Multiplizieren Sie das Ergebnis der ganzzahligen division durch den divisor
Schritt 3: Subtrahieren Sie die Dividende der variable multipliziert, beachten Sie die doppelte Verneinung.
Daher:
Das % (modulo) - operator liefert den Rest der division des ersten Arguments durch das zweite. Die numerische Argumente werden zuerst konvertiert, um zu einem gemeinsamen Typ.
Diese basiert auf Rangfolge.
%
ist modulo.3 % 2 = 1
,4 % 2 = 0
/
ist (eine Ganzzahl in diesem Fall), eine division, also:Es ist ein modulo-operation
http://en.wikipedia.org/wiki/Modulo_operation
http://docs.python.org/reference/expressions.html
Also mit der Reihenfolge der Operationen, das arbeiten
(3+2+1-5) + (4%2) - (1/4) + 6
(1) + (0) - (0) + 6
7
1/4=0, denn wir tun integer-Mathe hier.