Jak mogę znaleźć pozostałą część liczby z dzielenia w Pythonie?
Na przykład:
jeśli liczba to 26, a liczba podzielona to 7, to reszta z dzielenia to 5.
(ponieważ 7 + 7 + 7 = 21 i 26-21 = 5).
Jak mogę znaleźć pozostałą część liczby z dzielenia w Pythonie?
Na przykład:
jeśli liczba to 26, a liczba podzielona to 7, to reszta z dzielenia to 5.
(ponieważ 7 + 7 + 7 = 21 i 26-21 = 5).
Odpowiedzi:
szukasz operatora modulo:
a % b
na przykład:
26 % 7
Oczywiście, może chcieli, żebyś sam to wdrożył, co też nie byłoby zbyt trudne.
-10 % 3 == 2
. Jednak a/b*b + a%b == a
nadal jest prawdą, ponieważ python zawsze zaokrągla w kierunku -Infinity, w przeciwieństwie do niektórych innych języków, które zaokrągla w kierunku 0, ale zwróci -1.
%
wykonuje prawdziwy moduł, który zwraca wartości z zakresu [0, divisor)
i dobrze łączy się w pary z dzieleniem zmiennoprzecinkowym (w kierunku ujemnej nieskończoności). Języki C używają %
operatora do operacji na resztach, które zwracają wartości z zakresu (-divisor, divisor)
i dobrze łączą się ze standardowym dzieleniem (w kierunku zera).
26% 7 (otrzymasz resztę)
26/7 (otrzymasz dzielnik może być wartością zmiennoprzecinkową)
26 // 7 (otrzymasz dzielnik tylko jako liczbę całkowitą))
Jeśli chcesz uzyskać iloraz i resztę w jednej linii kodu (bardziej ogólny przypadek użycia), użyj:
quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
W Pythonie 3.7 jest nowa math.remainder()
funkcja:
from math import remainder
print(remainder(26,7))
Wynik:
-2.0 # not 5
Uwaga, jak wyżej, to nie to samo, co %
.
Cytując dokumentację :
matematyka. reszta (x, y)
Zwraca resztę x w stylu IEEE 754 w odniesieniu do y. Dla skończonego x i skończonego niezerowego y, jest to różnica x - n * y, gdzie n jest liczbą całkowitą najbliższą dokładnej wartości ilorazu x / y. Jeśli x / y jest dokładnie w połowie odległości między dwiema kolejnymi liczbami całkowitymi, dla n używana jest najbliższa parzysta liczba całkowita. Reszta r = reszta (x, y) zatem zawsze spełnia abs (r) <= 0,5 * abs (y).
Przypadki specjalne są zgodne z IEEE 754: w szczególności reszta (x, math.inf) to x dla dowolnego skończonego x, a reszta (x, 0) i reszta (math.inf, x) podnoszą wartość ValueError dla dowolnego nie-NaN x. Jeśli wynik operacji reszty jest zerowy, to zero będzie miało ten sam znak co x.
Na platformach używających binarnych liczb zmiennoprzecinkowych IEEE 754 wynik tej operacji jest zawsze dokładnie reprezentowalny: nie jest wprowadzany błąd zaokrąglania.
W numerze 29962 opisano uzasadnienie utworzenia nowej funkcji.
Podczas dzielenia używaj% zamiast /. To zwróci ci resztę. Więc w twoim przypadku
26 % 7 = 5
Modulo byłoby poprawną odpowiedzią, ale jeśli robisz to ręcznie, powinno to działać.
num = input("Enter a number: ")
div = input("Enter a divisor: ")
while num >= div:
num -= div
print num
Możemy to rozwiązać za pomocą operatora modułu (%)
26% 7 = 5;
ale 26/7 = 3, ponieważ da to iloraz, ale operator% da resztę.
Możesz znaleźć resztę za pomocą operatora modulo Przykład
a=14
b=10
print(a%b)
Wydrukuje 4
Jeśli chcesz resztę swojego problemu z dzieleniem, po prostu użyj rzeczywistych reguł reszty, tak jak w matematyce. To prawda, że nie da ci to wyniku dziesiętnego.
valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)
Jeśli chcesz, aby ten w formacie kalkulatora, wystarczy podstawić valone = 8
z valone = int(input("Value One"))
. Zrób to samo valtwo = 3
, ale oczywiście z różnymi wartościami.
valone/valtwo
na int. w przeciwnym razie da to liczbę zmiennoprzecinkową.
możesz zdefiniować funkcję i wywołać ją resztą z 2 wartościami, takimi jak rem (liczba1, liczba2), która zwraca liczbę1% liczba2, a następnie utworzyć chwilę i ustawić ją na wartość true, a następnie wydrukować dwa wejścia dla Twojej funkcji o numerach 1 i 2 i wypisać (rem (liczba1, liczba2)