برنامهنویسی میتواند جالب باشد ولی شما نباید همهٔ وقت خود را پشت رایانه بگذرانید. اگر(if)
باران میبارد؛ به خواندن ادامه بدهید، وگرنه؛ بروید بیرون و بازی کنید. (بله، حتی شما بابا بزرگ!)
بیاید از روی جملههای قبلی جملههایی درست کنیم که با گزارههای اگر(if
) شروع میشوند:
if it rains: #اگر باران میبارد،
continue #به خواندن ادامه بده،
elif: #وگرنه،
exit #برو بیرون و بازی کن.
که اگر بخواهیم همین دستورها را به صورت شِبْهِ کد انگلیسی بنویسیم، این طور میشود:
if it rains,
keep reading,
otherwise,
go outside and play
و باز اگر میخواستیم همین دستورها را با پایتون بنویسیم، میتوانست این طوری باشد:
if it_rains():
keep_reading()
else:
go_outside_and_play()
بله! پایتون امکان ارائهٔ بیشتر از یک گزینه را با کلیدواژهٔ else
فراهم میکند. بهٔک مثال دیگر نگاه کنیم. ریبرگ میتواند نگاه کند و ببیند آیا دیواری رو به رویش هست، یا نه. محیط همین دور و بر ۱ را در نظر بگیرید. برای نوشتن برنامه، شما باید یک تابع جدید را برای بررسی خالی بودن رو به روی ریبرگ ()front_is_clear
(رو به رو خالیه؟) به کار ببرید . ریبرگ از این تابع به همراه گزارههای شرطی if/else
استفاده میکند، تا بررسی کند رو به رویش مانع هست، یا نه. با اسفتاده از اینها شما برنامهای مینویسید که ریبرگ را در محیط هدایت میکند. چیزی مثل این:
def move_or_turn ():
if front_is_clear():
# something
else:
# something else
repeat 40:
move_or_turn()
امتحان کنید!
با استفاده از کد بالا برنامهای بنویسید که ریبرگ با آن در محیط همین دور و بر ۱ بچرخد. آیا میتوانید برنامه را -با اضافه کردن یک سطر کد- طوری تغییر بدهید که بعد از پایان ریبرگ یک نشانه در هر گوشهٔ محیط بگذارد؟
if/else
را بفهمیم؟¶تا حالا دیدیم که گزارههای def
و if
را میشود (گاهی) معادل جا زدن آن تکّهکد در نظر گرفت. حالت استثناء موقعی بود که شرط گزارهٔ if
غلط (False
) بود؛ که در آن صورت همان قسمت از کد را نادیده میگرفتیم. این کار تقریباً معادل حذف آن قسمت از کد بود. گزارههای if/else
را میشود معادل انتخاب بین گذاشتن یک تکّهکد و یا یک تکّهکد دیگر در نظر گرفت. بنابراین:
move()
if True:
turn_right()
else:
turn_left()
move()
معادل این کد است:
move()
turn_right()
move()
در حالی که این کد:
move()
if False:
turn_right()
else:
turn_left()
move()
معادل این یکیست:
move()
turn_left()
move()
میتوانیم این کدها را به صورت این روندنما نشان بدهیم: