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
Lepaskan: 2024-12-31 04:35:17
asal
744 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk
  • 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
Salin selepas log masuk
  • 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
Salin selepas log masuk

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.")
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan