Apa %
perhitungannya? Sepertinya saya tidak tahu apa fungsinya.
Apakah itu berhasil persen perhitungan misalnya: 4 % 2
ternyata sama dengan 0. Bagaimana?
Operator% (modulo) menghasilkan sisanya dari pembagian argumen pertama oleh yang kedua. Argumen numerik pertama kali dikonversi ke tipe umum. Argumen nol kanan memunculkan pengecualian ZeroDivisionError. Argumen mungkin angka floating point, misalnya, 3,14% 0,7 sama dengan 0,34 (karena 3,14 sama dengan 4 * 0,7 + 0,34.) Operator modulo selalu menghasilkan hasil dengan tanda yang sama dengan operan kedua (atau nol); nilai absolut dari hasil ini benar-benar lebih kecil dari nilai absolut dari operan kedua [2].
Diambil dari http://docs.python.org/reference/expressions.html
Contoh 1:
6%2
dievaluasi 0
karena tidak ada sisa jika 6 dibagi 2 (3 kali).
Contoh 2 : 7%2
dievaluasi 1
karena ada sisa 1
kapan 7 dibagi 2 (3 kali).
Jadi untuk meringkas itu, ia mengembalikan sisa operasi divisi, atau 0
jika tidak ada sisanya. Jadi 6%2
berarti menemukan sisa 6 dibagi 2.
- 21 % 4
3 dalam Python.-11%5 = 4
??Agak di luar topik,
%
ini juga digunakan dalam operasi pemformatan string seperti%=
untuk mengganti nilai menjadi string:Sekali lagi, di luar topik, tetapi tampaknya ini adalah fitur yang sedikit terdokumentasi yang membuat saya perlu waktu untuk melacak, dan saya pikir itu terkait dengan perhitungan modulo Python yang peringkat halaman SO ini sangat tinggi.
sumber
%=
tidak muncul di halaman itu%
Operator dipilih karena mencerminkan persen- penentu yang digunakan dalam string itu sendiri.Ekspresi seperti
x % y
mengevaluasi hingga sisax ÷ y
- well, secara teknis itu adalah "modulus" dan bukan "pengingat" sehingga hasilnya mungkin berbeda jika Anda membandingkan dengan bahasa lain di mana%
operator sisanya. Ada beberapa perbedaan halus (jika Anda tertarik pada konsekuensi praktis lihat juga "Mengapa Lantai Divisi Integer Python" di bawah).Presedensi sama dengan operator
/
(divisi) dan*
(perkalian).Python gotcha : tergantung pada versi Python yang Anda gunakan,
%
juga operator interpolasi string (tidak digunakan), jadi waspadalah jika Anda berasal dari bahasa dengan casting tipe otomatis (seperti PHP atau JS) di mana ekspresi seperti'12' % 2 + 3
legal: di Python itu akan menghasilkanTypeError: not all arguments converted during string formatting
yang mungkin akan cukup membingungkan untuk Anda.[perbarui untuk Python 3]
Komentar pengguna n00p:
Lebih tepatnya, pembagian integer dulunya adalah default di Python 2 (ingatlah, jawaban ini lebih tua dari anak saya yang sudah sekolah dan pada saat itu 2.x adalah arus utama):
Dalam
9 / 2
hasil Python modern4.5
memang:[memperbarui]
Pengguna dahiya_boy bertanya dalam sesi komentar:
Ini aneh, bukan? Jika Anda mencoba ini dalam JavaScript:
Ini karena dalam JavaScript
%
adalah operator "sisanya" sedangkan di Python adalah operator "modulus" (jam matematika).Anda bisa mendapatkan penjelasan langsung dari GvR :
Di Jawa dan iOS
-11 % 5 = -1
sedangkan di python dan ruby-11 % 5 = 4
.Separuh dari alasannya dijelaskan oleh Paulo Scardine , dan sisa penjelasannya ada di bawah sini
Di Java dan iOS,
%
beri sisanya yang berarti jika Anda membagi 11% 5 memberiQuotient = 2 and remainder = 1
dan -11% 5 memberiQuotient = -2 and remainder = -1
.Kode contoh di iOS cepat.
Tetapi ketika kita berbicara tentang python memberikan modulus jam. Dan kerjanya dengan formula di bawah ini
mod(a,n) = a - {n * Floor(a/n)}
Itu berarti,
mod(11,5) = 11 - {5 * Floor(11/5)} => 11 - {5 * 2}
Begitu,
mod(11,5) = 1
Dan
mod(-11,5) = -11 - 5 * Floor(11/5) => -11 - {5 * (-3)}
Begitu,
mod(-11,5) = 4
Kode contoh dalam python 3.0.
sumber
help(divmod)
dokumentasikan invarianq, r = divmod(x y) <==> q*y + r == x
.Modulus adalah operasi matematika, kadang-kadang digambarkan sebagai "aritmatika jam." Saya menemukan bahwa menggambarkannya hanya sebagai sisa adalah menyesatkan dan membingungkan karena menutupi alasan sebenarnya itu digunakan begitu banyak dalam ilmu komputer. Ini benar-benar digunakan untuk membungkus siklus.
Pikirkan jam: Misalkan Anda melihat jam di waktu "militer", di mana rentang waktu berlangsung dari 0:00 - 23,59. Sekarang jika Anda menginginkan sesuatu terjadi setiap hari pada tengah malam, Anda ingin waktu saat ini mod 24 menjadi nol:
jika (jam% 24 == 0):
Anda dapat memikirkan semua jam dalam sejarah yang melingkari lingkaran 24 jam berulang-ulang dan jam saat ini adalah angka yang sangat panjang mod 24. Ini adalah konsep yang jauh lebih mendalam dari sekadar sisa, itu adalah cara matematika untuk berurusan dengan siklus dan sangat penting dalam ilmu komputer. Ini juga digunakan untuk membungkus array, memungkinkan Anda untuk meningkatkan indeks dan menggunakan modulus untuk membungkus kembali ke awal setelah Anda mencapai akhir array.
sumber
a % b = a - b * floor(a/b)
Python - Operator Dasar
http://www.tutorialspoint.com/python/python_basic_operators.htm
a = 10 dan b = 20
b% a = 0
sumber
Dalam sebagian besar bahasa% digunakan untuk modulus . Python tidak terkecuali.
sumber
% Operator Modulo juga dapat digunakan untuk mencetak string (Sama seperti dalam C) sebagaimana didefinisikan di Google https://developers.google.com/edu/python/strings .
Ini tampaknya menggigit topik tetapi pasti akan membantu seseorang.
sumber
x % y
menghitung sisa divisix
dibagi dengan diy
mana hasil bagi adalah bilangan bulat . Sisanya memiliki tanday
.Pada Python 3 perhitungan menghasilkan
6.75
; ini karena/
melakukan pembagian yang benar, bukan pembagian bilangan bulat seperti (secara default) pada Python 2. Pada Python 21 / 4
memberikan 0, karena hasilnya dibulatkan ke bawah.Divisi integer dapat dilakukan pada Python 3 juga, dengan
//
operator, sehingga untuk mendapatkan 7 sebagai hasilnya, Anda dapat menjalankan:Juga, Anda bisa mendapatkan pembagian gaya Python di Python 2, hanya dengan menambahkan baris
sebagai baris kode sumber pertama di setiap file sumber.
sumber
#
- anak adalah untuk komentar dan//
operator.Modulus operator, digunakan untuk pembagian sisa pada bilangan bulat, biasanya, tetapi dalam Python dapat digunakan untuk angka floating point.
http://docs.python.org/reference/expressions.html
sumber
Ini adalah operasi modulo, kecuali ketika itu adalah operator pemformatan string gaya-C kuno, bukan operasi modulo . Lihat di sini untuk detailnya. Anda akan melihat banyak dari ini dalam kode yang ada.
sumber
Selain itu, ada fungsi bawaan yang berguna yang disebut
divmod
:sumber
Sadarilah itu
bahkan dengan tanda kurung menghasilkan 6,75 bukannya 7 jika dihitung dengan Python 3.4.
Dan operator '/' juga tidak mudah dimengerti (python2.7): coba ...
Ini agak di luar topik di sini, tetapi harus dipertimbangkan ketika mengevaluasi ungkapan di atas :)
sumber
(1)+(0)-(0.25)+(6)
.Sulit bagi saya untuk dengan mudah menemukan kasus penggunaan khusus untuk penggunaan% online, misalnya mengapa melakukan pembagian modulus fraksional atau pembagian modulus negatif menghasilkan jawaban yang benar. Semoga ini bisa membantu mengklarifikasi pertanyaan seperti ini:
Divisi Modulus Secara Umum:
Divisi modulus mengembalikan sisa operasi divisi matematika. Apakah itu sebagai berikut:
Katakanlah kita memiliki dividen 5 dan pembagi 2, operasi divisi berikut akan (disamakan dengan x):
Langkah pertama dalam perhitungan modulus adalah melakukan pembagian integer:
x_int = 5 // 2 (pembagian integer dalam python menggunakan double slash)
x_int = 2
Selanjutnya, output x_int dikalikan dengan pembagi:
x_mult = x_int * pembagi x_mult = 4
Terakhir, dividen dikurangi dari x_mult
dividend - x_mult = 1
Operasi modulus, oleh karena itu, mengembalikan 1:
5% 2 = 1
Aplikasi untuk menerapkan modulus ke sebagian kecil
Perhitungan modulus ketika diterapkan pada fraksi sama dengan di atas; Namun, penting untuk dicatat bahwa divisi integer akan menghasilkan nilai nol ketika pembagi lebih besar dari dividen:
Divisi integer menghasilkan 0 sedangkan; oleh karena itu, ketika langkah 3 di atas dilakukan, nilai dividen dijalankan (dikurangi dari nol):
Aplikasi untuk menerapkan modulus ke negatif
Pembagian lantai terjadi di mana nilai divisi integer dibulatkan ke nilai integer terendah:
Karena itu, ketika Anda melakukan pembagian integer Anda mungkin mendapatkan hasil yang berbeda dari yang Anda harapkan!
Menerapkan langkah-langkah di atas pada dividen dan pembagi berikut menggambarkan konsep modulus:
Langkah 1: Terapkan pembagian integer
Langkah 2: Gandakan hasil pembagian integer dengan pembagi
Langkah 3: Kurangi dividen dari variabel yang dikalikan, perhatikan negatif ganda.
Karena itu:
sumber
Operator% (modulo) menghasilkan sisanya dari pembagian argumen pertama oleh yang kedua. Argumen numerik pertama kali dikonversi ke tipe umum.
Ini didasarkan pada prioritas operator.
sumber
%
adalah modulo .3 % 2 = 1
,4 % 2 = 0
/
adalah (bilangan bulat dalam hal ini) divisi, jadi:sumber
Ini adalah operasi modulo http://en.wikipedia.org/wiki/Modulo_operation
http://docs.python.org/reference/expressions.html
Jadi dengan urutan operasi, itu berhasil
(3 + 2 + 1-5) + (4% 2) - (1/4) + 6
(1) + (0) - (0) + 6
7
1/4 = 0 karena kita melakukan bilangan bulat matematika di sini.
sumber
Ini, seperti dalam banyak bahasa mirip-C, operasi sisa atau modulo. Lihat dokumentasi untuk tipe numerik - int, float, long, complex .
sumber
Modulus - Membagi operan tangan kiri dengan operan tangan kanan dan mengembalikan sisanya.
Jika itu membantu:
... dan seterusnya.
sumber
Saya telah menemukan bahwa cara termudah untuk memahami operator modulus (%) adalah melalui divisi panjang. Ini adalah sisanya dan dapat berguna dalam menentukan angka menjadi genap atau ganjil:
sumber