Jika pernyataan adalah alat yang hebat, tetapi ketika jumlah cabang bertambah, mereka dengan cepat menjadi berat. Pada artikel ini, kita akan mengeksplorasi dua alternatif pernyataan if
- "cocok. case", Python 3 baru. 10 fitur bahasa
- Kamus, sangat berguna ketika berhadapan dengan input pengguna
Skenario artikel ini. pernyataan if yang panjang
Bayangkan Anda memiliki pernyataan if seperti ini [asumsikan fungsi average
telah ditentukan]
numbers = [1, 4, 16, 20]
action = input[f"What would you like to do with {numbers}?"] # e.g. add
if action == "add":
print[sum[numbers]]
elif action == "avg":
print[average[numbers]]
elif action == "max":
print[max[numbers]]
else:
print["Action not recognized"]
Menggunakan pertandingan. case untuk menyederhanakan rantai pernyataan if
dalam "pertandingan. case", kita masih perlu memberi tahu Python apa opsi yang berbeda, dan apa yang harus dilakukan di setiap kasus
def average[seq]:
return sum[seq] / len[seq]
numbers = [1, 4, 16, 20]
action = input[f"What would you like to do with {numbers}? "]
match action:
case "add":
print[sum[numbers]]
case "avg":
print[average[numbers]]
case "max":
print[max[numbers]]
case _:
print["Operation not recognized."]
_Meskipun ini terlihat sedikit lebih baik, masih banyak duplikasi yang sama. Setiap cabang bersyarat memiliki fungsi print[]
_ yang digandakan, dan ada banyak kata kunci
Secara keseluruhan, panjang blok kode adalah sama
Ditambah masalah terbesar dari semua tetap. bahwa saat Anda menambahkan lebih banyak opsi, persyaratan percabangan juga akan bertambah
Gunakan kamus untuk menyederhanakan pernyataan if yang panjang
Alih-alih rantai log if-elif atau rantai kasus pencocokan panjang, Anda dapat menyimpan opsi pengguna dalam kamus
options = {
"add": sum,
"avg": average,
"max": max
}
Kemudian Anda dapat menanyakan kepada pengguna opsi mana [dari kamus] yang ingin mereka gunakan
options = {
"add": sum,
"avg": average,
"max": max
}
numbers = [1, 4, 16, 20]
action = input[f"What would you like to do with {numbers}?"] # e.g. add
Dengan ini, kita dapat mengambil fungsi dari kamus secara langsung
options = {
"add": sum,
"avg": average,
"max": max
}
numbers = [1, 4, 16, 20]
action = input[f"What would you like to do with {numbers}?"] # e.g. add
operation = options.get[action]
_Karena kamus memetakan string ke fungsi, variabel operation
sekarang akan berisi fungsi yang ingin kita jalankan
Yang tersisa hanyalah menjalankan
def average[seq]:
return sum[seq] / len[seq]
numbers = [1, 4, 16, 20]
action = input[f"What would you like to do with {numbers}? "]
match action:
case "add":
print[sum[numbers]]
case "avg":
print[average[numbers]]
case "max":
print[max[numbers]]
case _:
print["Operation not recognized."]
_0 untuk mendapatkan hasil kita. Jika pengguna memasukkan def average[seq]:
return sum[seq] / len[seq]
numbers = [1, 4, 16, 20]
action = input[f"What would you like to do with {numbers}? "]
match action:
case "add":
print[sum[numbers]]
case "avg":
print[average[numbers]]
case "max":
print[max[numbers]]
case _:
print["Operation not recognized."]
1, maka operation
akan menjadi fungsi def average[seq]:
return sum[seq] / len[seq]
numbers = [1, 4, 16, 20]
action = input[f"What would you like to do with {numbers}? "]
match action:
case "add":
print[sum[numbers]]
case "avg":
print[average[numbers]]
case "max":
print[max[numbers]]
case _:
print["Operation not recognized."]
3Kita juga harus melakukan pengecekan kesalahan, untuk memastikan kita tidak mencoba menjalankan fungsi yang tidak ada jika pengguna memasukkan sesuatu yang bukan salah satu kunci kamus
options = {
"add": sum,
"avg": average,
"max": max
}
numbers = [1, 4, 16, 20]
action = input[f"What would you like to do with {numbers}?"] # e.g. add
operation = options.get[action]
if operation:
operation[numbers]
else:
print["Action not recognized"]
_Anda masih memerlukan pernyataan if jika pengguna memilih sesuatu yang tidak memiliki kunci dalam kamus, tetapi ini adalah pernyataan if cabang tunggal yang tidak akan tumbuh seiring waktu
Manfaat lainnya adalah Anda dapat dengan mudah memberi tahu pengguna opsi mana yang tersedia untuk mereka dengan menggunakan tombol kamus
option_texts = '|'.join[options.keys[]
action = input[f"What would you like to do with {numbers}? [{option_texts}] "]
# Would show "What would you like to do with [1, 4, 16, 20]? [add|avg|max] "
_Kesimpulan
Dalam posting ini kita telah melihat dua cara untuk menyederhanakan pernyataan if. dengan menggunakan "pertandingan. case" dan dengan menggunakan kamus
Jika Anda ingin mempelajari lebih lanjut tentang Python, pertimbangkan untuk mendaftar di Kursus Python Lengkap kami yang membawa Anda dari pemula hingga mahir [termasuk OOP, pengembangan web, pengembangan asinkron, dan banyak lagi. ]. Kami memiliki jaminan uang kembali 30 hari, jadi Anda benar-benar tidak akan rugi dengan mencobanya. Kami akan senang untuk memiliki Anda