Python - Pengendalian Penyataan

Helo, ahli peny[gMASK]

Python - Exceptions

Berikut adalah terjemahan teks yang diberikan ke dalam bahasa Melayu (ms):

Python - Pengendalian Penyataan

Helo, ahli penyelidik Python masa depan! Saya gembira untuk menjadi pemandu anda dalam perjalanan yang menarik ini ke dunia pengendalian penyataan Python. Sebagai seseorang yang telah mengajar pemrograman untuk beberapa tahun, saya boleh katakan bahwa untuk memahami penyataan adalah seperti untuk belajar untuk bersepeda dengan rakit penyusun - ia mungkin kelihatan sukar pada awalnya, tetapi sekali anda menguasainya, anda akan dapat untuk berlayar dengan lancar pada masa yang singkat!

Apa itu Penyataan?

Sebelum kita koyak ke atas, mari kita mula dengan asas. Bayangkan anda sedang untuk memasak kue (ikuti saya di sini, saya janji ini berkaitan dengan Python!). Anda telah pun mendapat resepi anda (kod anda), bahan-bahan anda (data anda), dan anda sudah bersedia untuk mula. Tetapi apa yang terjadi jika anda kehabisan telur di atas perjalanan? Itu adalah penyataan di dunia penyedap!

Di Python, penyataan adalah ralat yang muncul semasa pelaksanaan program. Ia seperti bendera merah yang muncul dan katakan, "Whoa di sana! Ada sesuatu yang tidak kena!"

Mari kita lihat contoh yang simple:

print(10 / 0)

Jika anda jalankan kod ini, Python akan meletakkan penyataan ZeroDivisionError. Ia mengatakan, "Hey, anda tak boleh bahagi dengan kosong! Ia tidak dibenarkan di atas dapur saya... Saya maksud, lingkungan pemrograman!"

Pengendalian Penyataan di Python

Sekarang kita tahu apa itu penyataan, mari kita belajar bagaimana untuk mengendalikan mereka dengan elok. Di Python, kita gunakan blok try dan except untuk menangkap dan mengendalikan penyataan.

Ini adalah struktur asasnya:

try:
# Kod yang mungkin meletakkan penyataan
except jenisPenyataan:
# Kod untuk mengendalikan penyataan

Mari kita ubah contoh sebelumnya:

try:
result = 10 / 0
print(result)
except ZeroDivisionError:
print("Opps! Anda tak boleh bahagi dengan kosong.")

Apabila anda jalankan kod ini, bukannya kena kerosakan, ia akan cetak: "Opps! Anda tak boleh bahagi dengan kosong."

klausa except tanpa Penyataan

Bila-bila masa, anda mungkin ingin untuk menangkap penyataan yang muncul. Dalam kes ini, anda boleh gunakan klausa except tanpa menentukan jenis penyataan:

try:
# Beberapa kod berisiko
x = int(input("Masukkan nombor: "))
y = 10 / x
print(y)
except:
print("Ada sesuatu yang salah!")

Ini akan menangkap penyataan yang muncul di atas blok try. Walau bagaimanpun, secara umum adalah lebih baik untuk menangkap penyataan khusus apabila anda boleh, kerana ia menjadikan kod anda lebih tepat dan lebih mudah untuk didebug.

klausa except dengan Beberapa Penyataan

Anda juga boleh mengendalikan beberapa penyataan di atas klausa except yang sama:

try:
x = int(input("Masukkan nombor: "))
y = 10 / x
print(y)
except (ValueError, ZeroDivisionError):
print("Input tidak sah atau pembahagian dengan kosong!")

Kod ini akan menangkap kedua-dua ValueError (jika pengguna masukkan nilai bukan numerik) dan ZeroDivisionError.

klausa try-finally

Klausa finally digunakan untuk kod yang mesti dilaksanakan tanpa mengira sama ada penyataan muncul atau tidak. Ia seperti rakit penyusun selepas pesta - ia akan selalu muncul, tidak kira bagaimana pesta berjalan!

try:
f = open("contoh.txt", "r")
# Lakukan beberapa operasi di atas fail
except FileNotFoundError:
print("Fail tersebut tidak wujud!")
finally:
f.close()  # Ini akan selalu dilaksanakan, walaupun penyataan muncul

Argumen Penyataan

Penyataan boleh membawa maklumat tambahan. Anda boleh mengakses maklumat ini di atas klausa except anda:

try:
x = 10 / 0
except ZeroDivisionError as e:
print(f"Ralat berlaku: {e}")

Ini akan cetak: "Ralat berlaku: pembahagian dengan kosong"

Meletakkan Penyataan

Bila-bila masa, anda mungkin ingin untuk meletakkan penyataan sendiri. Ia seperti menjadi wasit di atas permainan dan memanggil kesalahan:

def periksa_umur(umur):
if umur < 0:
raise ValueError("Umur tak boleh negatif!")
print(f"Umur anda adalah {umur}")

try:
periksa_umur(-5)
except ValueError as e:
print(e)

Ini akan cetak: "Umur tak boleh negatif!"

Penyataan Ditakrif oleh Pengguna

Anda juga boleh membuat jenis penyataan anda sendiri. Ia seperti menginventoriaturat baru di atas permainan:

class TerlaluBanyakPizzaError(Exception):
pass

def pesan_pizza(nombor):
if nombor > 100:
raise TerlaluBanyakPizzaError("Anda tak boleh pesan lebih daripada 100 pizza!")
print(f"Pesanan untuk {nombor} pizza ditempatkan berjaya.")

try:
pesan_pizza(101)
except TerlaluBanyakPizzaError as e:
print(e)

Penyataan di Python

Penyataan adalah cara untuk memastikan bahwa syarat tertentu dipenuhi. Ia seperti rakit penyusun kecil di atas kod anda:

def bahagi(a, b):
assert b != 0, "Pembahagi tak boleh kosong!"
return a / b

try:
result = bahagi(10, 0)
except AssertionError as e:
print(e)

Ini akan cetak: "Pembahagi tak boleh kosong!"

Penyataan Standar

Python datang dengan satu set penyataan terbina-dalam. Berikut adalah beberapa dari yang paling umum:

Nama Penyataan Keterangan
ZeroDivisionError Dilepaskan apabila pembahagian atau modulo oleh kosong berlaku
ValueError Dilepaskan apabila fungsi mendapat argumen jenis yang betul tetapi nilai yang tidak sah
TypeError Dilepaskan apabila operasi atau fungsi diterapkan kepada objek jenis yang tidak sesuai
NameError Dilepaskan apabila nama tempatan atau global tidak ditemui
FileNotFoundError Dilepaskan apabila fail atau direktori diminta tetapi tidak wujud
IndexError Dilepaskan apabila subskripur urutan di luar julat
KeyError Dilepaskan apabila kunci rakam tidak ditemui
ImportError Dilepaskan apabila pernyataan import gagal

Dan itu adalah, rakan-rakan! Anda baru sahaja menyelesaikan kelas kempimpinan anda di atas pengendalian penyataan Python. Ingat, penyataan bukan musuh anda - mereka adalah seperti rakam penyedia arah yang membantu anda menuju kepada kod yang lebih baik dan lebih kuat. Teruskan untuk berlatih, teruskan untuk eksperimen, dan tidak lama lagi anda akan mengendalikan penyataan seperti profesional. Selamat untuk pemrograman!

Credits: Image by storyset