Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Berbilang Operator `atau` dalam Python Menghasilkan Keputusan Boolean Tidak Dijangka?

Mengapa Berbilang Operator `atau` dalam Python Menghasilkan Keputusan Boolean Tidak Dijangka?

Linda Hamilton
Lepaskan: 2024-12-31 03:44:09
asal
1003 orang telah melayarinya

Why Do Multiple `or` Operators in Python Produce Unexpected Boolean Results?

Mengapa Berbilang Atau Operator Menghasilkan Hasil Yang Tidak Dijangka

Dalam Python, menilai ungkapan yang melibatkan berbilang atau pengendali boleh mengelirukan. Sebagai contoh, pertimbangkan baris kod berikut:

if name == "Kevin" or "Jon" or "Inbar":
Salin selepas log masuk

Barisan ini berhasrat untuk memberikan akses kepada pengguna yang tidak dibenarkan, tetapi pada hakikatnya, ia membenarkan semua pengguna. Untuk memahami sebabnya, kita perlu meneliti tingkah laku pengendali.

Masalah dengan Pelbagai Ors

Dalam bahasa Inggeris, "or" menghubungkan berbilang klausa, menunjukkan bahawa sekurang-kurangnya satu mesti betul. Walau bagaimanapun, dalam Python, ungkapan seperti "A atau B atau C" dihuraikan sebagai "(A atau B) atau C." Ini bermakna hanya ungkapan pertama dinilai. Jika ia benar, keseluruhan ungkapan adalah benar.

Penyelesaian 1: Berbilang Operator Kesamaan

Untuk membandingkan "nama" dengan betul kepada setiap pengguna yang dibenarkan, gunakan berbilang operator kesamaan :

if name == "Kevin" or name == "Jon" or name == "Inbar":
Salin selepas log masuk

Penyelesaian 2: Set Keahlian

Penyelesaian alternatif ialah menggunakan set nama yang dibenarkan dan semak keahlian:

authorized = {"Kevin", "Jon", "Inbar"}
if name in authorized:
Salin selepas log masuk

Penyelesaian 3: Mana-mana Operator

Fungsi any() juga boleh digunakan untuk mengulangi nama yang dibenarkan dan mengembalikan True jika mana-mana daripadanya sepadan "name":

authorized = ["Kevin", "Jon", "Inbar"]
if any(name == auth for auth in authorized):
Salin selepas log masuk

Prestasi

Antara tiga penyelesaian, keahlian set menawarkan prestasi terbaik, diikuti oleh berbilang pengendali kesaksamaan. Menggunakan any() adalah yang paling tidak cekap.

Atas ialah kandungan terperinci Mengapa Berbilang Operator `atau` dalam Python Menghasilkan Keputusan Boolean Tidak Dijangka?. 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