Cara Melakukan Pembagian Lantai dengan Python

Diterbitkan: 2022-11-02

Dalam tutorial ini, Anda akan belajar bagaimana melakukan pembagian lantai dengan Python. Anda akan menggunakan operator // Python, fungsi lantai dari modul matematika Python, dan banyak lagi – dengan contoh kode.

Kita akan mulai dengan ikhtisar operator aritmatika dengan Python dan mempelajari cara kerja operator pembagian lantai //. Kemudian, kita akan mempelajari cara menggunakan metode lain yang setara termasuk fungsi dari modul matematika dan operator untuk melakukan pembagian lantai.

Mari kita mulai…

Operator Aritmatika dengan Python

Dengan Python, Anda dapat menggunakan operator aritmatika untuk melakukan operasi aritmatika sederhana pada bilangan tipe data int dan float . Operator ini bertindak pada operan (angka) dan mengembalikan hasil operasi.

Aritmatika-Operator-dalam-Python

Tabel berikut merangkum operator aritmatika di Python dan cara kerjanya:

Operator Sintaksis Hasil
Penambahan (+) num1+num2 Mengembalikan jumlah num1 dan num2
Pengurangan (-) num1-num2 Mengembalikan selisih antara num1 dan num2
Perkalian (*) num1*num2 Mengembalikan produk dari num1 dan num2
Eksponen (**) num1**num2 Mengembalikan hasil num1 yang dipangkatkan num2 ; num1 num2
Divisi (/) num1/num2 Mengembalikan hasil saat num1 dibagi dengan num2 – termasuk bagian pecahan
Pembagian lantai (/) num1//num2 Mengembalikan hasil bagi ketika num1 dibagi dengan num2
Modul (%) num1 % num2 Mengembalikan sisanya ketika num1 dibagi dengan num2

Mari kita ambil beberapa contoh yang menggunakan operator aritmatika ini. Anda dapat mencoba contoh-contoh ini di Python REPL atau di editor Python online Geekflare.

 >>> num1 = 18 >>> num2 = 5 >>> num1 + num2 23 >>> num1 - num2 13 >>> num1 * num2 90 >>> num1 ** num2 1889568

Dalam contoh ini, num1 adalah 18 dan num2 adalah 5. Operasi pembagian num1/num2 mengembalikan hasil termasuk bagian pecahan.

Angka 5 masuk ke 18 tiga kali meninggalkan sisa tiga. Oleh karena itu, operasi pembagian lantai, num1//num2 , memberikan hasil bagi 3, sedangkan operator modulo memberikan sisanya – juga 3 dalam kasus ini.

 >>> num1/num2 3.6 >>> num1//num2 3 >>> num1 % num2 3

Ini akan memberi Anda gambaran tentang cara kerja operator divisi, divisi lantai, dan modulo. Selanjutnya, kita akan mempelajari operator divisi lantai secara detail.

️ Dalam Python 2, operasi pembagian (/) memotong hasilnya ke bilangan bulat terdekat—mirip dengan operasi pembagian lantai di Python 3. Tutorial ini membahas cara kerja operasi pembagian lantai di Python 3.x.

Pembagian Lantai Menggunakan // Operator

Lantai-Divisi-Menggunakan-Operator

Pertimbangkan operasi pembagian dengan dividen dan pembagi. Dalam num1/num2 , num1 adalah dividen dan num2 adalah pembagi. Untuk melakukan pembagian lantai num1 dan num2 , gunakan num1//num2 .

Operator pembagian lantai (//) mengembalikan hasil bagi dari operasi pembagian—sebagai bilangan bulat atau angka floating point—bergantung pada tipe data operan.

Operator pembagian lantai tidak memastikan bahwa jawabannya selalu bilangan bulat. Jika salah satu dividen ( num1 ) atau pembagi ( num2 ) adalah float maka hasil dari num1//num2 adalah float. Berikut adalah beberapa contoh.

 >>> 18.0//5 3.0 >>> 10.0//4 2.0 >>> 15//4.0 3.0

Jika Anda membutuhkan hasilnya untuk menjadi bilangan bulat, maka Anda harus secara eksplisit memasukkannya ke dalam bilangan bulat menggunakan fungsi int() :

 >>> int(18.0//5) 3 >>> int(10.0//4) 2 >>> int(15//4.0) 3

Apa yang Terjadi di Bawah Terpal?

Saat Anda menggunakan operator pembagian lantai //, metode khusus (juga disebut metode dunder) __floordiv__() dipanggil. Oleh karena itu, Anda juga dapat menggunakan metode __floordiv__() pada bilangan bulat atau floating point apa pun, seperti yang ditunjukkan di bawah ini:

 num1 = 18 num2 = 5 num1.__floordiv__(num2) # Output: 3

Pembagian Lantai Menggunakan operator.floordiv()

Lantai-Divisi-Menggunakan-operator.floordiv

Untuk melakukan pembagian lantai dengan Python, Anda juga dapat menggunakan fungsi floordiv() dalam modul operator .

Modul operator Python berisi definisi fungsi efisien yang dapat melakukan semua operasi aritmatika. Oleh karena itu, untuk melakukan pembagian lantai, Anda juga dapat menggunakan fungsi floordiv() dari modul operator – alih-alih operator //.

Menggunakan fungsi floordiv() dari modul operator sama dengan menggunakan operator pembagian lantai.

 >>> import operator >>> operator.floordiv(18,5) # Output: 3 >>> operator.floordiv(12,5.0) # Output: 2.0

Pembagian Lantai Menggunakan math.floor()

Bagaimana Fungsi Lantai Bekerja?

Dalam matematika, fungsi floor() mengambil sembarang bilangan real x sebagai input dan mengembalikan bilangan bulat (hasil). Hasil ini adalah bilangan bulat terbesar yang lebih kecil atau sama dengan bilangan real x.

Untuk memahami ini dengan lebih baik, mari kita ambil beberapa contoh dan visualisasikan angka-angka ini pada garis bilangan.

Contoh 1 : Perhatikan bilangan 2.3. Bilangan bulat terbesar yang kurang dari atau sama dengan 2,3 adalah 2; jadi lantai(2.3) akan kembali 2.

python-floordivision-tutorial-ex1

Contoh 2: Anda juga dapat menerapkan definisi yang sama saat bekerja dengan angka negatif. Perhatikan angka -1.7. Bilangan bulat terbesar yang kurang dari atau sama dengan -1.7 adalah -2; jadi lantai (-1.7) akan mengembalikan -2.

python-floordivision-tutorial-ex2

Mari kita verifikasi hasil di atas menggunakan fungsi floor() dari modul matematika.

 >>> from math import floor >>> floor(2.3) 2 >>> floor(-1.7) -2

Untuk melakukan pembagian lantai, Anda dapat memanggil fungsi floor() dengan num1/num2 sebagai argumen. Saat memotong atau membulatkan hasilnya ke bilangan bulat terdekat, ini setara dengan operasi pembagian lantai.

Anda dapat secara eksplisit mengimpor fungsi floor() dari modul math , seperti yang ditunjukkan:

 from math import floor num1 = 18 num2 = 5 floor(num1/num2) # Output: 3

Atau, Anda juga dapat mengimpor hanya modul math dan kemudian mengakses fungsi floor() menggunakan math.floor() .

 import math num1 = 18 num2 = 5 math.floor(num1/num2) # Output: 3

Berbeda dengan fungsi floordiv() dari modul operator dan operator pembagian lantai //, menggunakan math.floor(num1/num2) memastikan bahwa hasilnya adalah bilangan bulat. Metode ini membuat kode dapat dibaca dan menghilangkan langkah type-casting.

 import math num1 = 18.0 num2 = 5 math.floor(num1/num2) # Output: 3

Contoh Pembagian Lantai di Python

Contoh-Divisi-Lantai-di-Python

Mari kita akhiri diskusi kita dengan contoh praktis: Pencarian biner.

Pencarian biner adalah algoritma pencarian yang efisien yang memungkinkan Anda mencari elemen target melalui array yang diurutkan dalam waktu O(log n) , di mana n adalah ukuran array.

Algoritma ini bekerja dengan membagi interval pencarian menjadi setengah pada setiap langkah. Ini dilakukan tergantung pada apakah titik tengah interval cocok dengan target (pencarian berakhir saat kecocokan ditemukan!) atau kurang dari atau lebih besar dari target. Karena ukuran larik dikurangi setengahnya pada setiap langkah, titik tengah tidak selalu dievaluasi menjadi bilangan bulat.

 itemlist = [5,7,18,21,34,45] item = 7

Pertimbangkan implementasi algoritma pencarian biner berikut. Fungsi binary_search() mengambil nomor ( item ) dan daftar ( itemlist ) dan mencari kemunculan item dalam itemlist .

  • Jika item ditemukan, fungsi mengembalikan indeks di mana item terjadi.
  • Lain, ia mengembalikan None .
 def binary_search(item, itemlist): # get the list size listsize = len(itemlist) - 1 # start at the two ends of the list lowerIdx = 0 upperIdx = listsize while lowerIdx <= upperIdx: # calculate the middle point # use normal division instead of floor division midPt = (lowerIdx + upperIdx)/ 2 # if item is found, return the index if itemlist[midPt] == item: return midPt # otherwise get the next midpoint if item > itemlist[midPt]: lowerIdx = midPt + 1 else: upperIdx = midPt - 1 if lowerIdx > upperIdx: return None

Implementasi ini secara fungsional benar kecuali bahwa kami belum memperhitungkan midPt yang tidak mengevaluasi ke bilangan bulat saat pencarian berlangsung.

 binary_search(item,itemlist)

Jika kita memanggil fungsi tersebut, kita mengalami TypeError yang menyatakan bahwa indeks daftar harus berupa bilangan bulat atau irisan, bukan float.

 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-3-a5f12ebc3145> in <module> ----> 1 binary_search(item,itemlist) <ipython-input-2-524ef6900b1f> in binary_search(item, itemlist) 12 13 # if item is found, return the index ---> 14 if itemlist[midPt] == item: 15 return midPt 16 # otherwise get the next midpoint TypeError: list indices must be integers or slices, not float

Kami memodifikasi definisi fungsi untuk menggunakan operator pembagian lantai:

 def binary_search(item, itemlist): # get the list size listsize = len(itemlist) - 1 # start at the two ends of the list lowerIdx = 0 upperIdx = listsize while lowerIdx <= upperIdx: # calculate the middle point # use floor division midPt = (lowerIdx + upperIdx)// 2 # if item is found, return the index if itemlist[midPt] == item: return midPt # otherwise get the next midpoint if item > itemlist[midPt]: lowerIdx = midPt + 1 else: upperIdx = midPt - 1 if lowerIdx > upperIdx: return None

Fungsi mengembalikan indeks di mana item 7 ditemukan, yang merupakan indeks satu.

 binary_search(item,itemlist) # Output: 1

Kesimpulan

Saya harap tutorial ini membantu Anda memahami cara melakukan pembagian lantai dengan Python. Berikut ringkasan berbagai metode yang telah Anda pelajari:

  • Dalam Python, operator b melakukan operasi yang ditentukan oleh operator dengan a dan b sebagai operan dan mengembalikan hasil operasi.
  • Anda dapat menggunakan operator pembagian lantai Python //; a//b mengembalikan hasil bagi dari operasi pembagian a/b.
  • Atau, Anda dapat menggunakan fungsi floordiv() setara yang didefinisikan dalam modul operator Python dengan sintaks: operator.floordiv(a,b) untuk mendapatkan hasil a//b.
  • Semua metode di atas mengembalikan hasil bagi tetapi tipe datanya bisa berupa float atau int tergantung pada nilai a dan b. Jadi, Anda harus memberikan nilai pengembalian ke bilangan bulat.
  • Fungsi floor() dari modul matematika Python juga dapat digunakan untuk melakukan pembagian lantai: math.floor(a,b) setara dengan a//b dan mengembalikan bilangan bulat. Bila Anda ingin hasilnya menjadi bilangan bulat, pertimbangkan untuk menggunakan fungsi lantai dari modul matematika.

Selanjutnya, pelajari cara bekerja dengan defaultdict di Python.