Kekeliruan "a == x atau y atau z"
Apabila cuba membandingkan pembolehubah dengan berbilang nilai, ia menggoda untuk digunakan Pengendali logik Python, seperti dalam:
if a == x or y or z: # Incorrect
Walau bagaimanapun, ungkapan ini akan sentiasa menilai kepada Benar, tanpa mengira nilai a. Ini kerana pengendali "atau" dalam konteks ini tidak berkelakuan seperti yang diharapkan.
Cara Operator "atau" Berfungsi
Operator "atau" Python (|) akan menilai kepada Benar jika mana-mana operannya adalah Benar. Jadi dalam ungkapan di atas, memandangkan salah satu daripada x, y atau z sentiasa Benar (nilai bukan kosong ialah Benar dalam Python), ungkapan itu menilai kepada Benar tanpa mengira nilai a.
Cara Betul untuk Membandingkan dengan Berbilang Nilai
Untuk membandingkan pembolehubah dengan berbilang nilai dengan betul, terdapat beberapa pilihan:
Gunakan operator "atau" eksplisit untuk membandingkan dengan setiap nilai secara berasingan:
if a == x or a == y or a == z: # Correct
Buat satu set atau senarai nilai yang sah dan gunakan operator "masuk" untuk menyemak keahlian:
if a in {"Kevin", "Jon", "Inbar"}: # Correct
Gunakan ungkapan penjana dengan "any()" untuk menyemak secara eksplisit setiap nilai:
if any(a == auth for auth in ["Kevin", "Jon", "Inbar"]): # Correct
Pertimbangkan Prestasi
Untuk prestasi, menggunakan set atau senarai dengan operator "in" lazimnya pilihan terpantas. Ungkapan penjana menggunakan "any()" adalah yang paling bertele-tele dan paling perlahan.
Contoh Penggunaan
Untuk memberikan akses kepada pengguna yang dibenarkan sahaja:
authorized_names = {"Kevin", "Jon", "Inbar"} name = input("Please enter your name: ") if name in authorized_names: print("Access granted.") else: print("Access denied.")
Atas ialah kandungan terperinci Mengapakah `a == x atau y atau z` Sentiasa Menilai kepada Benar dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!