Menyemak Kebolehbahagiaan dalam Python: Perspektif Berbeza
Apabila berhadapan dengan tugas untuk menentukan sama ada sesuatu nombor boleh dibahagi dengan yang lain, ramai pembangun secara naluri menggunakan pembahagian dan memeriksa bakinya. Walau bagaimanapun, pendekatan ini boleh membawa kepada perangkap, terutamanya dalam konteks tafsiran pembahagian Python yang pelbagai.
Dalam Python 2.x, gelagat lalai ialah pembahagian integer, yang membuang bakinya. Ini bermakna bahawa pengendali bahagian akan sentiasa menghasilkan integer, tanpa mengira kehadiran baki bukan sifar. Akibatnya, menggunakan isinstance untuk menguji integer tidak memberikan diskriminasi yang bermakna.
Dalam Python 3.x, sebaliknya, pembahagian lalai kepada operasi titik terapung, menghasilkan nilai titik terapung walaupun untuk nombor bulat. Akibatnya, semakan isinstance akan gagal walaupun nombor boleh dibahagi dalam pengertian matematik.
Laluan yang Lebih Baik: Pengendali Modulus ke Penyelamat
Pendekatan yang lebih berkesan ialah untuk menggunakan operator modulus, %. Ungkapan n % k == 0 mengembalikan Benar jika dan hanya jika n boleh dibahagi sama rata dengan k. Kaedah ini secara langsung menangani kriteria pembahagian tanpa kesamaran yang dikaitkan dengan pembahagian.
Contoh Penyelesaian
Berbekalkan pengetahuan ini, mari ubah suai kod anda untuk menguji kebolehbahagiaan dengan betul:
<code class="python">n = 0 s = 0 while n < 1001: if (n % 3 == 0) or (n % 5 == 0): s += n n += 1</code>
Penyelesaian ini menggunakan operator modulus untuk menyemak kebolehbahagi dengan kedua-dua 3 dan 5, dengan berkesan menapis nombor yang memenuhi mana-mana syarat. Hasilnya ialah penyelesaian yang lebih tepat dan mantap untuk masalah asal anda.
Atas ialah kandungan terperinci Bagaimana untuk Semak Kebolehbahagiaan dalam Python Tanpa Perangkap Bahagian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!