چالش روزانه · ۱۵ آبان ۱۴۰۵
چالش پایتون ۱۹: یک، True و یکممیزصفر
قبل از اجرای کد، خروجی آن را پیشبینی کن. حدس نزن؛ خط به خط فکر کن پایتون چه میکند.
print(len({1, True, 1.0, 2}))نمایش پاسخ و توضیح
پاسخ درست: گزینهٔ ج — 2
گام به گام
مجموعه (و کلید دیکشنری) دو عضو را تکراری حساب میکند اگر با == برابر باشند (و hash یکسان داشته باشند). در پایتون:
1 == True → True (True در واقع همان عدد 1 است)
1 == 1.0 → True
پس 1، True و 1.0 از نظر مجموعه یک عضوند. پایتون اولی (1) را نگه میدارد و بقیه را تکراری حساب میکند. 2 هم عضو جداگانه است.
{1, True, 1.0, 2} → {1, 2}
جواب: 2
خودتان ببینید
s = {1, True, 1.0, 2}
print(s) # {1, 2}
print({True, 1, 1.0}) # این بار اولی True است: {True}
print(True + True) # 2 ؛ bool زیرنوعِ int است
d = {1: "یک"}
d[1.0] = "یکممیزصفر"
print(d) # کلید همان 1 میماند، مقدار عوض میشود
نکتهٔ کاربردی: در مجموعهها و کلیدهای دیکشنری، 1، 1.0 و True یک چیزند. اگر دادهتان ترکیبی از عدد و True/False است (مثلاً جوابهای یک فرم)، قبل از شمردن یا گروهبندی، نوعشان را یکی کنید. (درس مجموعه)
حالا خودت اجرا کن و تغییرش بده
print(len({1, True, 1.0, 2}))