Menguji Pelbagai Pembolehubah untuk Kesaksamaan: Penyelesaian Komprehensif
Pertanyaan ini menimbulkan cabaran yang menarik: membandingkan berbilang pembolehubah terhadap integer tertentu dan menjana rentetan keluaran berdasarkan keputusan.
Untuk menangani perkara ini, seseorang mesti memahami boolean itu ungkapan dalam Python tidak berkelakuan seperti ayat bahasa Inggeris. Sebagai contoh, serpihan kod yang disediakan mentafsir setiap sisi operator atau sebagai ungkapan yang berasingan, dan bukannya menilai semua pembolehubah terhadap perbandingan yang sama.
Untuk membetulkan isu ini, sintaks yang betul ialah:
if x == 1 or y == 1 or z == 1:
Ini memastikan bahawa perbandingan dilakukan secara bebas untuk setiap pembolehubah.
Selain itu, seseorang boleh memekatkan kod ini menggunakan ujian pembendungan terhadap tuple:
if 1 in (x, y, z):
Atau, lebih berkesan lagi, satu set boleh digunakan untuk ujian keahlian kos tetapnya:
if 1 in {x, y, z}:
Kod yang dipertingkatkan ini mengambil kesempatan daripada fakta bahawa ujian keahlian set mempunyai masa pelaksanaan tetap, tanpa mengira operan kiri.
Pada dasarnya, atau operator memisahkan hujahnya, menilai setiap satu sebagai ungkapan boolean. Walau bagaimanapun, walaupun dinilai sebagai satu ungkapan, hasilnya tidak sepadan dengan tingkah laku yang diingini. Ini kerana operator atau mengembalikan argumen pertama yang 'benar' (nilai selain False, angka 0 atau bekas kosong). Akibatnya, hanya nilai seperti benar pertama dalam jujukan akan dipertimbangkan, yang berpotensi membawa kepada hasil yang salah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguji Berbilang Pembolehubah dengan Cekap untuk Kesamaan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!