Wie kann ich den Teilungsrest einer Zahl in Python finden?
Beispiel:
Wenn die Zahl 26 und die geteilte Zahl 7 ist, ist der Teilungsrest 5.
(da 7 + 7 + 7 = 21 und 26-21 = 5.)
Wie kann ich den Teilungsrest einer Zahl in Python finden?
Beispiel:
Wenn die Zahl 26 und die geteilte Zahl 7 ist, ist der Teilungsrest 5.
(da 7 + 7 + 7 = 21 und 26-21 = 5.)
Antworten:
Sie suchen den Modulo-Operator:
a % b
beispielsweise:
26 % 7
Natürlich wollten sie vielleicht, dass Sie es selbst implementieren, was auch nicht allzu schwierig wäre.
-10 % 3 == 2
. Dies a/b*b + a%b == a
gilt jedoch immer noch, da Python im Gegensatz zu einigen anderen Sprachen immer in Richtung -Infinity rundet, die in Richtung 0 runden, aber -1 zurückgeben würden.
%
einen echten Modul ausführt, der Werte für den Bereich zurückgibt [0, divisor)
und sich gut mit der Bodenteilung (in Richtung negativer Unendlichkeit) paart. C-Sprachen verwenden den %
Operator für Restoperationen, die Werte für den Bereich zurückgeben (-divisor, divisor)
und gut mit der Standarddivision (gegen Null) koppeln.
26% 7 (Sie erhalten den Rest)
26/7 (Sie erhalten Divisor kann Float-Wert sein)
26 // 7 (Sie erhalten nur einen ganzzahligen Divisor-Wert))
Wenn Sie Quotienten und Rest in einer Codezeile erhalten möchten (allgemeinerer Anwendungsfall), verwenden Sie:
quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
Ab Python 3.7 gibt es eine neue math.remainder()
Funktion:
from math import remainder
print(remainder(26,7))
Ausgabe:
-2.0 # not 5
Beachten Sie, wie oben, es ist nicht dasselbe wie %
.
Zitieren der Dokumentation :
Mathematik. Rest (x, y)
Geben Sie den IEEE 754-Rest von x in Bezug auf y zurück. Für endliches x und endliches y ungleich Null ist dies die Differenz x - n * y, wobei n die Ganzzahl ist, die dem exakten Wert des Quotienten x / y am nächsten kommt. Wenn x / y genau auf halbem Weg zwischen zwei aufeinanderfolgenden ganzen Zahlen liegt, wird die nächste gerade ganze Zahl für n verwendet. Der Rest r = Rest (x, y) erfüllt somit immer abs (r) <= 0,5 * abs (y).
Sonderfälle folgen IEEE 754: Insbesondere ist der Rest (x, math.inf) x für jedes endliche x, und der Rest (x, 0) und der Rest (math.inf, x) erhöhen den ValueError für jedes Nicht-NaN x. Wenn das Ergebnis der Restoperation Null ist, hat diese Null das gleiche Vorzeichen wie x.
Auf Plattformen mit binärem Gleitkomma IEEE 754 ist das Ergebnis dieser Operation immer genau darstellbar: Es wird kein Rundungsfehler eingeführt.
Issue29962 beschreibt die Gründe für das Erstellen der neuen Funktion.
Verwenden Sie beim Teilen das% anstelle des /. Dies wird den Rest für Sie zurückgeben. Also in deinem Fall
26 % 7 = 5
Modulo wäre die richtige Antwort, aber wenn Sie es manuell tun, sollte dies funktionieren.
num = input("Enter a number: ")
div = input("Enter a divisor: ")
while num >= div:
num -= div
print num
Wir können dies lösen, indem wir den Moduloperator (%) verwenden.
26% 7 = 5;
aber 26/7 = 3, weil es einen Quotienten gibt, aber der% -Operator den Rest gibt.
Den Rest finden Sie mit dem Modulo-Operator Beispiel
a=14
b=10
print(a%b)
Es wird 4 gedruckt
Wenn Sie den Rest Ihres Teilungsproblems möchten, verwenden Sie einfach die tatsächlichen Restregeln, genau wie in der Mathematik. Zugegeben, dies gibt Ihnen keine Dezimalausgabe.
valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)
Wenn Sie dies in einem Taschenrechnerformat machen möchten, ersetzen Sie es einfach valone = 8
durch valone = int(input("Value One"))
. Machen Sie dasselbe mit valtwo = 3
, aber offensichtlich mit verschiedenen Vairables.
valone/valtwo
auf int werfen . Andernfalls wird eine Gleitkommazahl erstellt.
Sie können eine Funktion definieren und sie als Rest mit 2 Werten wie rem (Nummer1, Nummer2) aufrufen, die Nummer1% Nummer2 zurückgeben. Erstellen Sie dann eine Weile und setzen Sie sie auf true. Drucken Sie dann zwei Eingaben für Ihre Funktion aus, die Nummer 1 und 2 enthalten, und drucken Sie dann (rem (Nummer1, Nummer2)