شرط تو در تو (Nested If)
گاهی داخل یک «شرط (If)»، دوباره شرط می گذاریم. به این کار «شرط تو در تو (Nested If)» می گویند. این روش وقتی مفید است که نتیجه ی مرحله ی اول، روی شرط بعدی تاثیر دارد.
تعریف ساده Nested If
در شرط تو در تو، اول شرط بیرونی بررسی می شود. اگر درست بود، شرط داخلی اجرا می شود. بنابراین تصمیم گیری قدم به قدم است.
مثال پایه
x = 41
if x > 10:
print("Above ten,")
if x > 20:
print("and also above 20!")
else:
print("but not above 20.")
نحوه کار گام به گام
کد از بیرونی ترین شرط آغاز می شود. سپس، درون همان بلوک، شرط بعدی ارزیابی می شود. این ترتیب، منطق را قابل کنترل می کند.
نمونه مجوز رانندگی
age = 25
has_license = True
if age >= 18:
if has_license:
print("You can drive")
else:
print("You need a license")
else:
print("You are too young to drive")
چند لایه ی تو در تو
می توانی چند سطح تودرتو بسازی. اما زیاد که شود، خوانایی کم می شود.
نمونه سه سطحی
score = 85
attendance = 90
submitted = True
if score >= 60:
if attendance >= 80:
if submitted:
print("Pass with good standing")
else:
print("Pass but missing assignment")
else:
print("Pass but low attendance")
else:
print("Fail")
Nested If یا عملگرهای منطقی؟
گاهی می شود تودرتو را با and ساده کرد. انتخاب، به منطق بستگی دارد.
نمونه با تودرتو
temperature = 25
is_sunny = True
if temperature > 20:
if is_sunny:
print("Perfect beach weather!")
همان منطق با and
temperature = 25
is_sunny = True
if temperature > 20 and is_sunny:
print("Perfect beach weather!")
نمونه های بیشتر
اعتبارسنجی ورود
username = "Emil"
password = "python123"
is_active = True
if username:
if password:
if is_active:
print("Login successful")
else:
print("Account is not active")
else:
print("Password required")
else:
print("Username required")
نمره با امتیاز اضافه
score = 92
extra_credit = 5
if score >= 90:
if extra_credit > 0:
print("A+ grade")
else:
print("A grade")
elif score >= 80:
print("B grade")
else:
print("C grade or below")
گام های تمرینی
- یک شرط بیرونی ساده بنویس.
- درون آن، شرط دوم اضافه کن.
- حالا به جای تودرتو، از
andامتحان کن.
جمع بندی سریع
- اول شرط بیرونی بررسی می شود.
- تودرتو برای منطق مرحله ای عالی است.
- زیاده روی، خوانایی را کم می کند.
andگاهی جایگزین بهتری است.
نکته: برای ادامه، صفحه ی عملگرهای منطقی و سپس pass در شرط را ببین. این ها کنار «شرط تو در تو» می نشینند.