Bagaimana saya bisa menemukan sisa pembagian angka dengan Python?
Misalnya:
Jika angka 26 dan angka yang dibagi 7, maka sisa pembagian adalah 5.
(karena 7 + 7 + 7 = 21 dan 26-21 = 5.)
Bagaimana saya bisa menemukan sisa pembagian angka dengan Python?
Misalnya:
Jika angka 26 dan angka yang dibagi 7, maka sisa pembagian adalah 5.
(karena 7 + 7 + 7 = 21 dan 26-21 = 5.)
Jawaban:
Anda mencari operator modulo:
a % b
sebagai contoh:
26 % 7
Tentu saja, mungkin mereka ingin Anda menerapkannya sendiri, yang juga tidak terlalu sulit.
-10 % 3 == 2
. Namun a/b*b + a%b == a
tetap berlaku, karena python selalu membulatkan ke -Infinity, tidak seperti beberapa bahasa lain, yang membulatkan ke 0 tetapi akan mengembalikan -1.
%
melakukan modulus yang benar, yang mengembalikan nilai pada kisaran [0, divisor)
dan berpasangan dengan pembagian lantai (menuju infinity negatif). Bahasa C menggunakan %
operator untuk operasi selanjutnya yang mengembalikan nilai pada kisaran (-divisor, divisor)
dan berpasangan dengan baik dengan pembagian standar (menuju nol).
26% 7 (Anda akan mendapatkan sisanya)
26/7 (Anda akan mendapatkan pembagi bisa menjadi nilai float)
26 // 7 (Anda akan mendapatkan nilai integer only integer))
Jika Anda ingin mendapatkan hasil bagi dan tetap dalam satu baris kode (penggunaan lebih umum), gunakan:
quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
Dari Python 3.7, ada math.remainder()
fungsi baru :
from math import remainder
print(remainder(26,7))
Keluaran:
-2.0 # not 5
Catatan, seperti di atas, tidak sama dengan %
.
Mengutip dokumentasi :
matematika sisa (x, y)
Kembalikan sisa gaya x IEEE 754 gaya sehubungan dengan y. Untuk hingga x dan hingga bukan nol y, ini adalah perbedaan x - n * y, di mana n adalah bilangan bulat terdekat dengan nilai pasti dari hasil bagi x / y. Jika x / y persis setengah dari dua bilangan bulat berturut-turut, bilangan bulat genap terdekat digunakan untuk n. Sisa r = sisanya (x, y) dengan demikian selalu memenuhi abs (r) <= 0,5 * abs (y).
Kasus khusus mengikuti IEEE 754: khususnya, sisa (x, math.inf) adalah x untuk setiap x terbatas, dan sisanya (x, 0) dan sisanya (math.inf, x) meningkatkan ValueError untuk setiap non-NaN x. Jika hasil dari operasi sisanya adalah nol, nol itu akan memiliki tanda yang sama dengan x.
Pada platform yang menggunakan floating-point IEEE 754, hasil dari operasi ini selalu benar-benar representable: tidak ada kesalahan pembulatan yang diperkenalkan.
Issue29962 menjelaskan alasan untuk membuat fungsi baru.
Gunakan% sebagai ganti / ketika Anda membagi. Ini akan mengembalikan sisanya untuk Anda. Jadi dalam kasus Anda
26 % 7 = 5
Modulo akan menjadi jawaban yang benar, tetapi jika Anda melakukannya secara manual, ini akan berhasil.
num = input("Enter a number: ")
div = input("Enter a divisor: ")
while num >= div:
num -= div
print num
Kita dapat menyelesaikan ini dengan menggunakan operator modulus (%)
26% 7 = 5;
tetapi 26/7 = 3 karena akan memberikan hasil bagi tetapi% operator akan memberikan sisanya.
Anda dapat menemukan sisanya menggunakan Contoho operator modul
a=14
b=10
print(a%b)
Ini akan mencetak 4
Jika Anda ingin sisa masalah divisi Anda, cukup gunakan aturan sisa yang sebenarnya, seperti dalam matematika. Memang ini tidak akan memberi Anda hasil desimal.
valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)
Jika Anda ingin membuatnya dalam format kalkulator, cukup gantikan valone = 8
dengan valone = int(input("Value One"))
. Lakukan hal yang sama dengan valtwo = 3
, tetapi jelas vairables berbeda.
valone/valtwo
ke int. selain itu akan menghasilkan angka float.
Anda dapat menetapkan suatu fungsi dan menyebutnya sisa dengan 2 nilai seperti rem (angka1, angka2) yang mengembalikan angka1% angka2 kemudian buat sesaat dan tetapkan benar lalu cetak dua input untuk fungsi Anda yang memegang nomor 1 dan 2 kemudian cetak (rem (angka1, angka2)