آموزش پایتون به زبان ساده: ورودی و حلقه‌ی while

سلام خدمت کاربران عزیز.
امیدوارم که این سلسله مقالات آموزشی پایتون تا اینجا براتون مفید بوده باشه.
در این آموزش قصد داریم تا با کاربر تعامل داشته باشیم. در واقع ما میخوایم یه سری ورودی از کاربر بگیریم و عملیات مختلفی روی اونا انجام بدیم. مثلا از ساده‌ترینش که یه متنی رو از طریق ورودی کاربر میگیریم و همونو نشون میدیم، تا برنامه‌های پیچیده تر دیگه. با ما همراه باشین.

معرفی تابع input

برنامه‌هایی که ما تا الان داشتیم، فقط یه سری کارای ثابتی انجام میدادند و با کاربر تعامل نداشتند. با استفاده از تابع input می‌تونیم یه سری ورودی به کدمون بدیم و بلاهای مختلفی سرشون بیاریم! مثلا مقدارشون رو ذخیره کنیم. شرایط مختلف رو بررسی کنیم و کلی کار دیگه. 
اجازه بدین تا با یه مثال این تابع رو معرفی کنم.

message = input(“Enter Your Name: “)
print(message)

توضیح:
نحوه‌ی کار با تابع input به اینصورت هستش که:
ما در ابتدا باید یه متغیر در نظر بگیریم، برای مثال متغیر message
بعد از اون تابع input رو با همون فرمتی که توی مثال بالا اومده می‌نویسیم.
برای اینکه مشخص باشه که قراره چه چیزی رو از کاربر دریافت کنیم باید یه پیامی توی خروجی نشون داده بشه، که توی مثال بالا از کاربر میخوایم که نام خودش رو وارد کنه.

با اجرای برنامه و رسیدن به خطی که تابع input در اون قراره داره، برنامه مکث می‌کنه و منتظر میمونه که ما یه متنی رو از طریق کیبورد وارد کنیم و تا زمانی که Enter رو نزنیم، برنامه ادامه نمیده.
بعد از اون ورودی که ما از طریق کیبورد وارد کردیم داخل متغیری که براش در نظر گرفتیم، ذخیره میشه.
و بعد از اون میتونیم هر بلایی سر این متغیر بیاریم. مثلا تو این مثال ما اونو چاپ کردیم :)

تبدیل به عدد با استفاده از تابع int

گاهی اوقات ما قصد داریم که ورودی‌های عددی از کاربر بگیریم و با اونا کار کنیم. مثلا یه سری عملیات محاسباتی روی اونا انجام بدیم. نکته‌ای که درباره استفاده از تابع input وجود داره اینه که: متغیرهایی که ذخیره میشن از نوع رشته هستند و اگه بخوایم مثل یه عدد باهاشون رفتار کنیم باید نوع‌شون رو تبدیل به عدد کنیم. با استفاده از تابع int می‌تونیم رشته‌ها رو تبدیل به عدد کنیم. با یه مثال با نحوه‌ی کار با اون آشنا میشیم.

age = input(‘How old Are You: ‘)
age = int(age)
if age >= 18:
    print(‘OK’)
else:
    print(‘No’)

آشنایی با حلقه‌های while

اگه یادتون باشه ما با حلقه‌ها آشنا شدیم و حلقه‌ی for رو با هم دیگه کار کردیم. حلقه‌های for اغلب برای پیمایش تو لیست‌ها و دیکنشری‌ها به کار میرن. توی این مقاله قصد داریم که حلقه‌های while رو معرفی کنیم.
حلقه‌های while معمولا زمانهایی به کار میرن که ما قصد داریم به ازای برقرار بودن یه شرطی، اون تکه از کد ما مدام تکرار بشه. در ادامه قصد دارم تا با کمک یه مثال ساده با نحوه‌ی کار با حلقه‌ی while آشنا بشیم.

number = 1
while number <= 5:
    print(number)
    number += 1

توضیح:
در ابتدا ما یه متغیر تعریف کردیم و مقدار ۱ رو بهش انتساب دادیم.
بعد از اون دستور while مون رو نوشتیم که نحوه‌ی کار با اون به این صورته:
ابتدا کلمه‌ی کلیدی while رو می‌نویسیم.
بعد از اون باید یه عبارت شرطی بنویسیم. این عبارات شرطی همونایی هستند که توی if ها هم ازشون استفاده می‌کردیم.
بعد از اون کاراکتر‌ : میاد. وجود این کاراکتر الزامیه.
در خط‌های بعدی، کدهایی که قصد داریم تکرار بشن رو به اندازه ۴ فاصله یا تب نسبت به while می‌نویسیم.

مراقب این چاه باشید!

یه نکته‌ی خیلی خیلی مهم در استفاده از حلقه‌ی while وجود داره و اون اینه که حواسمون باشه که یه وقت حلقه‌های ما بی‌نهایت نباشن. یعنی حلقه‌های ما باید محدود بشن و مثلا یه شرطی وجود داشته که به ادامه‌ی اون حلقه پایان بده وگرنه برنامه‌ی ما تا ابد میوفته داخل یه حلقه و تموم هم نمیشه!
برای اینکه این موضوع رو متوجه بشین. مثال قبلی رو بدون خط افزایش number بازنویسی کنید و اجرا کنید. یعنی مثال زیر:

number =1
while number <= 5:
    print(number)

اگه کدتون رو اجرا کنید، ناگهان متوجه میشین که توی خروجی به طور رگباری داره دنباله‌ای از یک‌ها پشت‌سر هم چاپ میشه و هیچ وقت تموم هم نمیشه!
در چنین مواقعی توصیه می‌کنم که ابتدا خونسردی خودتون رو حفظ کنید و نفس عمیق بکشید.
بعد بعد با بستن محیط پایتون شل یا میانبر ctrl + c این روند رو متوقف کنید.
بعد از اون باید برین، کد رو اشکال یابی کنید و حلقه‌تون رو از حالت نامحدود خارج کنید.

ترکیب تابع input و حلقه while

خب در ابتدا تابع input رو معرفی کردیم و با اون کار کردیم. اگه دقت کنید، برنامه‌ی ما تنها یک بار اجرا شد. اما بیاین تصور کنید که ما قراره چند تا ورودی رو به صورت پشت سر هم دریافت کنیم. در واقع قراره که یه کار تکراری انجام بدیم. اینجاست که باید دست به دامن حلقه while بشیم! یعنی چه جوری؟ آیا تا ابد حلقه باید تکرار باشه؟ اگه اینجوری باشه که یه حلقه بی‌نهایت داریم.
نگران نباشین. ما می‌تونیم مثلا یه شرط پایان حلقه تعریف کنیم؛ اگه ورودی کاربر مثلا exit بود. از حلقه بیاد بیرون و ادامه برنامه رو دنبال کنه. به مثال زیر دقت کنید:

message = “”
while message != ‘exit’:
    message = input(‘Enter Your Message: ‘)
    print(message)

توضیح:
در ابتدا یه متغیر با نام message تعریف کردیم و مقدار تهی رو بهش انتساب دادیم.
در مرحله‌ی بعد قراره وارد حلقه‌ی while بشیم، که اول باید شرط موردنظر چک بشه. آیا مقدار message برابر exit نیست؟ اگه برابر نیست، خب شرطمون درسته، پس می‌تونه وارد حلقه بشه.
در حلقه‌ی ما دو خط کد وجود داره که هربار تکرار میشه.
ابتدا میاد یه ورودی از کاربر میگیره و اونو تو متغیر message ذخیره میکنه.
بعد از اون هم میاد و پیامی که از کاربر گرفته رو نشون میده.
تا مادامی که ورودی ما برابر exit نباشه، حلقه‌ی ما تکرار میشه.

استفاده از break برای خروج از حلقه

همون‌طور که گفتیم، برای کار با حلقه‌ها حتما باید یه راه فراری در نظر بگیریم، وگرنه میفتیم توی یه حلقه بی‌نهایت که تموم هم نمیشه. در اینجا میخوام یه روش دیگه رو بگم. اجازه بدین مثال بالا رو با این روش بازنویسی کنم:

while True:
    message = input(‘Enter Your Message: ‘)
    if message == ‘exit’:
 break
    else:
        print(message)

توضیح:
همون‌طور که کد رو می‌بینید، از همون ابتدا شیرجه می‌زنیم توی یه حلقه، بدون هیچ شرطی! یعنی True
در ابتدا یه پیام رو از کاربر میگیریم.
در خط بعد یه شرط if داریم؛ اگه این ورودی برابر exit بود، با استفاده از دستور break حلقه رو می‌شکنه و از اون خارج میشه.
در غیر این‌صورت رشته‌ای که از کاربر گرفتیم رو چاپ می‌کنه. به همین راحتی.

به طور کلی نحوه‌ی استفاده از دستور break در حلقه while به این صورته که ما حلقه خودمون رو با شرط True مینویسیم.
و بعد داخل یه سری شرط‌هایی، دستور break رو برای خروج از حلقه قرار میدیم.

استفاده از continue در حلقه while

گاهی مواقع لازمه که ما تمام خط‌های یه حلقه رو اجرا نکنیم و اونا رو نادیده بگیریم. مثلا به محض برقرار بودن یه شرط داخل حلقه، تصمیم می‌گیریم که ادامه کد‌های اون حلقه رو اجرا نکنیم و دوباره از ابتدای حلقه شروع کنیم به اجرا. در اینجا هستش که از عبارت کلیدی continue استفاده می‌کنیم. اجازه بدین تا با یه مثال با چگونگی استفاده از این عبارت آشنا بشیم:

number = 0
while number < 10:
    number += 1
    if number % 2 == 0:
        continue
print(number)

توضیح:
در ابتدا ما یه متغیر با مقدار ۰ تعریف کردیم.
در مرحله‌ی بعد ما داخل هر حلقه میریم.
هر بار مقدار اون متغیر یکی یکی زیاد میشه.
در هر بار چک می‌کنه اگه اون عدد زوج بود، دیگه ادامه حلقه رو اجرا نکنه. یعنی برنامه‌ی تو این خط مستقیما می‌پره به ابتدای حلقه و تابع print رو هم اجرا نمی‌کنه.
در واقع در خروجی اعداد فرد از ۱ تا ۹ نشون داده میشن.

خب این قسمت هم به خوبی و خوشی تموم شد! امیدوارم که مطالب جدیدی یاد گرفته باشین و بتونید برنامه‌های قدرتمندتری رو بنویسید.


منبع: آموزش پایتون به زبان ساده: ورودی و حلقه‌ی while - وبسایت شخصی محمدحسین میثاق‌پور