✨ اینکه گفتیم "زنجیرههای != غیرترانستیو هستن و ممکنه نتیجه غیرمنتظره بدن" یعنی چی؟؟؟
⚠️ هشدار سریع درباره != در مقایسه زنجیرهای
🔹 چی کار میکنه؟
وقتی مینویسیم:
a != b != c
پایتون این رو اینطور میفهمه:
(a != b) and (b != c)
✅ یعنی فقط بررسی میکنه:
☚ اول؛ آیا a متفاوت از b هست؟
☚ دوم؛ آیا b متفاوت از c هست؟
🔹 اما هیچوقت نمیپرسه:
☚ آیا a متفاوت از c هم هست یا خیر؟
🔹 چرا ممکنه گمراهکننده باشه؟
☚ خیلی وقتها فکر میکنیم نوشتن بالا یعنی: "سهتا مقدار با هم متفاوتند"، ولی فقط این دو شرط رو چک میکنه:
a != b
b != c
☚ و هیچی دربارهی a != c نمیگه!
⚡️ مثلاً:
a = 1; b = 2; c = 1
☚ با وجود اینکه a == c،
a != b != c
☚ نتیجهاش True میشه، چون:
1 != 2 ✅
2 != 1 ✅
☚ در کل، True میده!
✅ راهحل مطمئن:
☚ اگر میخوای مطمئن بشی همهی سه مقدار با هم متفاوتند، بهتره واضح بگی:
a != b and b != c and a != c
☚ اینطوری هیچ جای ابهامی نمیمونه.
📌 نکته پایانی
🔻 != در مقایسه زنجیرهای، خاصه و نمیتونه جایگزین بررسی صریح تمایز همهی عناصر باشه.
🔻 اگر فقط دو شرط ابتدایی برات کافیه، مشکلی نیست.
🔻 ولی اگر دنبال اطمینان کامل هستی، حتماً از and استفاده کن 😊
💯 @PythonForYou 🧑💻👩💻