Làm thế nào tôi có thể đi tìm phần còn lại của một số trong Python?
Ví dụ:
Nếu số là 26 và số chia là 7, thì phần còn lại là 5.
(vì 7 + 7 + 7 = 21 và 26-21 = 5.)
Làm thế nào tôi có thể đi tìm phần còn lại của một số trong Python?
Ví dụ:
Nếu số là 26 và số chia là 7, thì phần còn lại là 5.
(vì 7 + 7 + 7 = 21 và 26-21 = 5.)
Câu trả lời:
bạn đang tìm toán tử modulo:
a % b
ví dụ:
26 % 7
Tất nhiên, có lẽ họ muốn bạn tự thực hiện nó, điều này cũng không quá khó khăn.
-10 % 3 == 2
. Tuy nhiên a/b*b + a%b == a
vẫn đúng, vì python luôn làm tròn về -Infality, không giống như một số ngôn ngữ khác, làm tròn về 0 nhưng sẽ trả về -1.
%
thực hiện một mô-đun thực, trả về các giá trị trên phạm vi [0, divisor)
và kết hợp tốt với phân chia nổi (hướng tới vô cực âm). Các ngôn ngữ C sử dụng %
toán tử cho các hoạt động còn lại trả về các giá trị trên phạm vi (-divisor, divisor)
và kết hợp tốt với phép chia tiêu chuẩn (về 0).
26% 7 (bạn sẽ nhận được phần còn lại)
26/7 (bạn sẽ nhận được ước số có thể là giá trị float)
26 // 7 (bạn sẽ chỉ nhận được giá trị số nguyên)
Nếu bạn muốn lấy thương số và phần còn lại trong một dòng mã (usecase chung hơn), hãy sử dụng:
quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
Từ Python 3.7, có một math.remainder()
chức năng mới :
from math import remainder
print(remainder(26,7))
Đầu ra:
-2.0 # not 5
Lưu ý, như trên, nó không giống như %
.
Trích dẫn tài liệu :
môn Toán. phần còn lại (x, y)
Trả về phần còn lại theo kiểu IEEE 754 của x đối với y. Đối với hữu hạn x và hữu hạn khác không y, đây là sự khác biệt x - n * y, trong đó n là số nguyên gần nhất với giá trị chính xác của thương số x / y. Nếu x / y chính xác là một nửa giữa hai số nguyên liên tiếp, số nguyên chẵn gần nhất được sử dụng cho n. Phần còn lại r = phần còn lại (x, y) do đó luôn thỏa mãn abs (r) <= 0,5 * abs (y).
Các trường hợp đặc biệt tuân theo IEEE 754: cụ thể, phần còn lại (x, math.inf) là x cho bất kỳ x hữu hạn nào, và phần còn lại (x, 0) và phần còn lại (math.inf, x) nâng cao ValueError cho mọi x không phải NaN x. Nếu kết quả của phép toán còn lại bằng 0, số 0 đó sẽ có cùng dấu với x.
Trên các nền tảng sử dụng dấu phẩy động nhị phân IEEE 754, kết quả của thao tác này luôn thể hiện chính xác: không có lỗi làm tròn nào được đưa ra.
Số phát hành29962 mô tả cơ sở lý luận để tạo chức năng mới.
Sử dụng% thay vì / khi bạn chia. Điều này sẽ trả lại phần còn lại cho bạn. Vì vậy, trong trường hợp của bạn
26 % 7 = 5
Modulo sẽ là câu trả lời đúng, nhưng nếu bạn đang thực hiện thủ công thì nó sẽ hoạt động.
num = input("Enter a number: ")
div = input("Enter a divisor: ")
while num >= div:
num -= div
print num
Chúng ta có thể giải quyết điều này bằng cách sử dụng toán tử mô đun (%)
26% 7 = 5;
nhưng 26/7 = 3 vì nó sẽ cho thương số nhưng toán tử% sẽ cho phần còn lại.
Bạn có thể tìm thấy phần còn lại bằng cách sử dụng toán tử modulo
a=14
b=10
print(a%b)
Nó sẽ in 4
Nếu bạn muốn phần còn lại của bài toán chia, chỉ cần sử dụng các quy tắc còn lại thực tế, giống như trong toán học. Cấp điều này sẽ không cung cấp cho bạn một đầu ra thập phân.
valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)
Nếu bạn muốn làm điều này trong một định dạng máy tính, chỉ cần thay thế valone = 8
bằng valone = int(input("Value One"))
. Làm tương tự với valtwo = 3
, nhưng rõ ràng vai khác nhau.
valone/valtwo
tới int. nếu không nó sẽ dẫn đến một số float.
bạn có thể xác định hàm và gọi phần còn lại với 2 giá trị như rem (number1, number2) trả về number1% number2 sau đó tạo một lúc và đặt thành true sau đó in ra hai đầu vào cho hàm của bạn giữ số 1 và 2 sau đó in (rem (số 1, số 2)