تصمیمگیریهای پیچیده در قصر جادو
**داستان کوتاه: تصمیمگیریهای پیچیده در قصر جادو**
آراد حالا با ساختارهای تصمیمگیری ساده آشنا شده بود و میتوانست برای شرایط مختلف از `if`، `elif` و `else` استفاده کند. اما یک روز تصمیم گرفت که برنامهای پیچیدهتر بنویسد. او نزد سینا رفت و گفت: «سینا، فرض کن من داخل یه قصر بزرگ هستم که هر اتاقش چندین در داره. میخوام برنامهای بنویسم که با بررسی چندین شرط، تصمیم بگیره از کدوم در وارد بشم یا از چه اتاقی خارج بشم. میشه اینو بهم یاد بدی؟»
سینا خندید و گفت: «حتماً! امروز قراره با **تصمیمگیریهای تو در تو** آشنا بشی، که مثل بررسی شرایط داخل یک شرایط دیگه است. این نوع تصمیمگیریها بهت کمک میکنه تا مسیرهای پیچیدهتر و هوشمندتری رو در برنامهت ایجاد کنی.»
آراد با کنجکاوی گفت: «یعنی چی؟»
سینا توضیح داد: «بذار مثالی بزنم. فرض کن که دو شرط اصلی داری: آیا کلید داری؟ و آیا چراغ روشنه؟ با استفاده از این دو شرط میتونی مسیرهای متفاوتی رو برای ورود یا خروج از اتاقها در نظر بگیری. مثلاً اگر کلید رو داشتی، اول بررسی میکنی که آیا چراغ روشن هست یا نه. این یعنی یه شرط داخل شرط دیگه. بیا اینو توی کد امتحان کنیم.»
آراد شروع به تایپ کرد:
“`python
has_key = True
is_light_on = False
if has_key:
if is_light_on:
print(“میتوانی وارد اتاق بشوی.”)
else:
print(“کلید داری ولی چراغ خاموش است، باید اول چراغ را روشن کنی.”)
else:
print(“بدون کلید نمیتوانی وارد اتاق شوی.”)
“`
وقتی کد را اجرا کرد، صفحه نمایش داد:
“`
کلید داری ولی چراغ خاموش است، باید اول چراغ را روشن کنی.
“`
آراد لبخندی زد و گفت: «فهمیدم! چون کلید داشتم، وارد شرط دوم شد و وضعیت چراغ رو هم بررسی کرد. حالا اگه بخوام حتی شرایط بیشتری رو هم اضافه کنم، مثلاً بررسی کنم که آیا اتاق نگهبان قفل نیست یا نه، چطور این کارو انجام بدم؟»
سینا گفت: «برای این کار میتونی از عملگرهای منطقی استفاده کنی. مثلاً `and` و `or` بهت اجازه میدن تا چندین شرط رو با هم ترکیب کنی. بیا این شرط رو هم اضافه کنیم.»
آراد تایپ کرد:
“`python
has_key = True
is_light_on = False
is_guard_room_locked = False
if has_key and not is_guard_room_locked:
if is_light_on:
print(“میتوانی وارد اتاق شوی و نگهبان هم نیست.”)
else:
print(“کلید داری و اتاق نگهبان هم باز است، ولی چراغ خاموش است.”)
else:
print(“یا کلید نداری یا اتاق نگهبان قفل است.”)
“`
اینبار نتیجه به این صورت ظاهر شد:
“`
کلید داری و اتاق نگهبان هم باز است، ولی چراغ خاموش است.
“`
آراد شگفتزده شد و گفت: «حالا فهمیدم چطوری میشه شرایط مختلف رو به هم متصل کرد تا مسیرهای مختلفی داشته باشم. ولی اگه بخوام تعداد زیادی شرط داشته باشم، مثلاً باید بررسی کنم که آیا نگهبان هم در راهرو هست یا نه، برنامه خیلی پیچیده نمیشه؟»
سینا سری تکان داد و گفت: «دقیقاً، در شرایط پیچیده میتونی از چندین `elif` و همچنین ترکیب منطقی `and` و `or` در یک خط استفاده کنی. همچنین، اگر شرایط خیلی پیچیده شد، میتونی از توابع استفاده کنی تا کد رو مرتبتر کنی. اما با همون چیزهایی که یاد گرفتی، حالا میتونی مسیرهای متنوعی رو بر اساس ترکیبهای مختلفی از شرطها بنویسی و تصمیمهای پیچیدهای بگیری. مهم اینه که ساختار رو به دقت طراحی کنی و از شرایط تو در تو بیش از حد استفاده نکنی.»
آراد با شوق گفت: «حالا دیگه احساس میکنم که میتونم پیچیدهترین قصرها رو هم کدنویسی کنم! ممنون سینا، خیلی چیز یاد گرفتم.»
سینا خندید و گفت: «آفرین، آراد! حالا تو آمادهای که در برنامههات شرایط مختلف و پیچیدهای رو در نظر بگیری و تصمیمات هوشمندانهتری بگیری. این مهارت، برنامههات رو انعطافپذیرتر و جذابتر میکنه!»