Rumah  >  Artikel  >  pembangunan bahagian belakang  >  ZeroDivisionError: Bagaimana untuk menyelesaikan ralat pembahagian-dengan-sifar Python?

ZeroDivisionError: Bagaimana untuk menyelesaikan ralat pembahagian-dengan-sifar Python?

WBOY
WBOYasal
2023-06-24 22:02:533376semak imbas

Dalam Python, apabila kita cuba membahagi dengan sifar, pengecualian ZeroDivisionError berlaku. Pengecualian ini biasanya berlaku dalam program apabila kami tidak mengendalikan kes tepi yang mungkin timbul dengan betul. Dalam artikel ini, kami akan membincangkan cara mengenal pasti dan menyelesaikan ralat bahagi dengan sifar dalam Python.

Secara umumnya, sifar tidak sah sebagai pembahagi. Kami tidak boleh menggunakan operasi bahagi dengan sifar dalam kod kami melainkan kami mempunyai sebab yang jelas untuk berbuat demikian. Sebagai contoh, apabila bekerja dengan pecahan atau perpuluhan, kita mungkin berhadapan dengan pembahagian dengan sifar. Dalam kes ini, kita memerlukan beberapa pengendalian khas.

Mari kita lihat contoh mudah:

a = 5
b = 0
c = a / b
print(c)

Apabila kita menjalankan kod di atas, kita akan mendapati bahawa program berhenti dan membuang pengecualian ZeroDivisionError. Ini kerana kita cuba bahagikan dengan sifar, yang mana ia adalah haram.

Bagaimana untuk menyelesaikannya?

Satu cara untuk menyelesaikan pengecualian ZeroDivisionError adalah dengan menggunakan try except block. Blok cuba boleh mengandungi kemungkinan operasi pengecualian, manakala blok kecuali boleh menyediakan kaedah pengendalian khas apabila pengecualian berlaku.

Sebagai contoh, kami boleh menambah percubaan kecuali blok pada program kami untuk mengendalikan ralat bahagi dengan sifar. Seperti yang ditunjukkan di bawah:

a = 5
b = 0
try:
    c = a / b
except ZeroDivisionError:
    print("除零错误!")
    c = None
print(c)

Dalam kod di atas, kami telah memasukkan kod yang mungkin membuang pengecualian ZeroDivisionError dalam blok percubaan. Jika pengecualian berlaku, program melompat ke blok kecuali dan mengeluarkan mesej segera. Dalam kes ini, kami menetapkan c kepada nilai Tiada untuk mengelakkan program ranap dengan ralat bahagi dengan sifar.

Apabila kita menjalankan kod di atas, kita akan mendapati bahawa tiada mesej ralat dalam output dan nilai c ialah Tiada. Ini menunjukkan bahawa program telah mengendalikan kes bahagi dengan sifar dengan betul.

Penyelesaian yang lebih baik

Walaupun percubaan kecuali blok boleh menyelesaikan ralat bahagi dengan sifar, ia bukanlah penyelesaian terbaik. Pendekatan yang lebih baik ialah menggabungkan operasi bahagi dengan sifar dengan pernyataan bersyarat. Kita boleh menggunakan pernyataan if yang mudah untuk menyemak sama ada b ialah sifar dan jika ya, gesa mesej ralat, jika tidak, jalankan seperti biasa.

Sebagai contoh, kod berikut menunjukkan cara menggunakan pernyataan if untuk menyemak sama ada pembahagi adalah sifar:

a = 5
b = 0
if b == 0:
    print("除零错误!")
    c = None
else:
    c = a / b
print(c)

Dalam kod di atas, kami menggunakan pernyataan if untuk menyemak sama ada b ialah sifar. Jika ya, cetak mesej ralat dan tetapkan nilai c kepada Tiada. Jika tidak, kami menjalankan operasi pembahagian seperti biasa.

Apabila kita menjalankan kod di atas, kita akan mendapati bahawa tiada mesej ralat dalam output dan nilai c ialah Tiada. Ini menunjukkan bahawa kami telah berjaya menyelesaikan ralat bahagi dengan sifar.

Ringkasan

Pengecualian ZeroDivisionError Python disebabkan oleh pembahagian dengan sifar. Untuk mengelakkan program ranap disebabkan ini, kita boleh menggunakan try except block atau pernyataan if untuk mengendalikan pengecualian ini. Walau bagaimanapun, pendekatan yang lebih baik adalah menggunakan pernyataan bersyarat untuk memeriksa sama ada pembahagi adalah sifar. Ini akan menjadikan kod kami lebih jelas, lebih mudah difahami dan lebih mantap.

Atas ialah kandungan terperinci ZeroDivisionError: Bagaimana untuk menyelesaikan ralat pembahagian-dengan-sifar Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn