Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah `a == x atau y atau z` Sentiasa Menilai kepada Benar dalam Python?

Mengapakah `a == x atau y atau z` Sentiasa Menilai kepada Benar dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-31 04:35:17740semak imbas

Why Does `a == x or y or z` Always Evaluate to True in Python?

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:

  • Operator "atau" eksplisit:

Gunakan operator "atau" eksplisit untuk membandingkan dengan setiap nilai secara berasingan:

if a == x or a == y or a == z:  # Correct
  • Set atau Senarai:

Buat satu set atau senarai nilai yang sah dan gunakan operator "masuk" untuk menyemak keahlian:

if a in {"Kevin", "Jon", "Inbar"}:  # Correct
  • Ungkapan Penjana dan "any()":

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!

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