Finden Sie den Teilungsrest einer Zahl

155

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.)

Bob
quelle
8
Sieht so aus, als hätte er es bereits getan :)
Chris Dixon
Ich würde vorschlagen, den Modulo- Operator
nachzuschlagen
11
Ich sehe nicht, wo er etwas über Hausaufgaben erwähnt hat
am

Antworten:

204

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.

Uku Loskit
quelle
13
Beachten Sie, dass der Modulo-Operator immer eine positive Zahl zurückgibt. Bei negativen Zahlen ist dies möglicherweise nicht das, was Sie erwarten würden, wenn Sie über den Rest sprechen : -10 % 3 == 2. Dies a/b*b + a%b == agilt 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.
Marcelj
6
Dies liegt daran, dass Pythons %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.
Aaron Franke
196

Der Rest einer Division kann mit dem Operator ermittelt werden %:

>>> 26%7
5

Falls Sie sowohl den Quotienten als auch das Modulo benötigen, gibt es die eingebaute divmodFunktion:

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)
tzot
quelle
47

26% 7 (Sie erhalten den Rest)

26/7 (Sie erhalten Divisor kann Float-Wert sein)

26 // 7 (Sie erhalten nur einen ganzzahligen Divisor-Wert))

Karush Mahajan
quelle
18

Wenn Sie Quotienten und Rest in einer Codezeile erhalten möchten (allgemeinerer Anwendungsfall), verwenden Sie:

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
Alok Nayak
quelle
17

Wenn Sie Modulo vermeiden möchten, können Sie auch eine Kombination der vier Grundoperationen verwenden :)

26 - (26 // 7 * 7) = 5
alys
quelle
15

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.

Chris_Rands
quelle
math.remainder funktioniert möglicherweise nicht wie erwartet Beispiel für Python 3.7 >>> math.remainder (-2.99,2) -0.9900000000000002 >>> math.remainder (-3,2) 1.0
Dominic Barraclough
4

Verwenden Sie beim Teilen das% anstelle des /. Dies wird den Rest für Sie zurückgeben. Also in deinem Fall

26 % 7 = 5
Bender der Größte
quelle
4

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
Cooper
quelle
5
Funktioniert nur, wenn num> = 0 und dif> 0 ist.
12431234123412341234123
4

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.

KATTAMURU ANIL
quelle
3
Wenn Sie Python 2 verwenden, ist 26/7 = 3 für Python 3, 26/7 ungefähr 3.7142857142857144
Antti A
2

Den Rest finden Sie mit dem Modulo-Operator Beispiel

a=14
b=10
print(a%b)

Es wird 4 gedruckt

Swarnima Shishodia
quelle
0

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.

S. Ahmad
quelle
du musst valone/valtwoauf int werfen . Andernfalls wird eine Gleitkommazahl erstellt.
Ali Yılmaz
-1

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)

user13790410
quelle
1
Bitte fügen Sie ein Arbeitsbeispiel hinzu. Das Erklären eines theoretischen Codes ist möglicherweise schwer zu verstehen.
mischva11