Як я міг займатися пошуком поділу, що залишився від числа в Python?
Наприклад:
Якщо число 26, а ділене число - 7, то залишок ділення дорівнює 5.
(оскільки 7 + 7 + 7 = 21 і 26-21 = 5.)
Як я міг займатися пошуком поділу, що залишився від числа в Python?
Наприклад:
Якщо число 26, а ділене число - 7, то залишок ділення дорівнює 5.
(оскільки 7 + 7 + 7 = 21 і 26-21 = 5.)
Відповіді:
Ви шукаєте оператора модуля:
a % b
наприклад:
26 % 7
Звичайно, можливо, вони хотіли, щоб ти сам це реалізував, що теж не було б надто складно.
-10 % 3 == 2
. Однак це a/b*b + a%b == a
все-таки справедливо, оскільки python завжди рухається в бік -Infinity, на відміну від деяких інших мов, які крутяться до 0, але повертаються -1.
%
виконує справжній модуль, який повертає значення в діапазоні [0, divisor)
і добре поєднується з floored поділом (до негативної нескінченності). Мови C використовують %
оператор для решти операцій, який повертає значення в діапазоні (-divisor, divisor)
і добре поєднується зі стандартним поділом (до нуля).
26% 7 (ви отримаєте залишок)
26/7 (ви отримаєте дільник може бути з плаваючою величиною)
26 // 7 (ви отримаєте лише дільник лише ціле значення))
У Python 3.7 з'явилася нова math.remainder()
функція:
from math import remainder
print(remainder(26,7))
Вихід:
-2.0 # not 5
Зауважте, як і вище, це не те саме , що %
.
Цитування документації :
математика. залишок (x, y)
Поверніть IEEE 754 у стилі x щодо y. Для кінцевих x і кінцевих ненульових y це різниця x - n * y, де n - найближче ціле число до точного значення коефіцієнта x / y. Якщо x / y знаходиться на півдорозі між двома цілими послідовними цілими числами, для n використовується найближче парне ціле число. Таким чином, залишок r = залишок (x, y) завжди задовольняє abs (r) <= 0,5 * abs (y).
Особливі випадки слідують за IEEE 754: зокрема, залишок (x, math.inf) - x для будь-якого кінцевого x, а решта (x, 0) і залишок (math.inf, x) підвищують ValueError для будь-якого не-NaN x. Якщо результат решти операції дорівнює нулю, цей нуль матиме такий самий знак, що і x.
На платформах, що використовують IEEE 754 з двійковою плаваючою комою, результат цієї операції завжди точно представлений: не вводиться помилка округлення.
Issue29962 описує обґрунтування створення нової функції.
Використовуйте% замість / при поділі. Це поверне вам залишок. Так у вашому випадку
26 % 7 = 5
Модуло буде правильною відповіддю, але якщо ви робите це вручну, це має спрацювати.
num = input("Enter a number: ")
div = input("Enter a divisor: ")
while num >= div:
num -= div
print num
Ми можемо вирішити це за допомогою оператора модуля (%)
26% 7 = 5;
але 26/7 = 3, оскільки це дасть коефіцієнт, але оператор% дасть залишок.
Залишок можна знайти за допомогою оператора модуля Приклад
a=14
b=10
print(a%b)
Він надрукує 4
Якщо ви хочете залишити свою проблему поділу, просто використовуйте фактичні правила, що залишилися, як і в математиці. Зрозуміло, це не дасть вам десяткових результатів.
valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)
Якщо ви хочете зробити це в форматі калькулятор, просто замінити valone = 8
з valone = int(input("Value One"))
. Зробіть те ж саме valtwo = 3
, але, очевидно, різні змінні елементи.
valone/valtwo
до int. інакше це призведе до числа з плаванням.
ви можете визначити функцію та назвати її залишком з двома значеннями, такими як rem (число1, число2), яке повертає число1% число2, а потім створити деякий час і встановити його як істинне, а потім роздрукувати два входи для вашої функції, утримуючи числа 1 і 2, а потім надрукувати (rem (число1, число2)