چالش روزانه · ۲۲ مهر ۱۴۰۵
چالش پایتون ۱۳: تلهٔ or در شرط
قبل از اجرای کد، خروجی آن را پیشبینی کن. حدس نزن؛ خط به خط فکر کن پایتون چه میکند.
ch = "z"
print(ch == "a" or "e")نمایش پاسخ و توضیح
پاسخ درست: گزینهٔ ج — e
پایتون این را چطور میخواند؟
== اولویت بالاتری از or دارد، پس عبارت اینطور گروهبندی میشود:
(ch == "a") or ("e")
نه اینطور: ch == ("a" or "e") و نه «ch برابر a یا برابر e».
ch == "a"←FalseFalse or "e"←orاولین مقدار «درست» را برمیگرداند. رشتهٔ"e"غیرخالی است، پس ارزش منطقیاش درست است.
نتیجه خود رشتهٔ "e" است، نه True. جواب: e
چرا مهم است؟
ch = "z"
if ch == "a" or "e":
print("صدادار!") # همیشه اجرا میشود 😱
این شرط همیشه برقرار است، چون "e" همیشه درست است. شکل درست:
ch = "z"
print(ch == "a" or ch == "e") # False
print(ch in "ae") # False؛ کوتاهتر
حالا خودت اجرا کن و تغییرش بده
ch = "z"
print(ch == "a" or "e")