حلقه while
به دوره آموزش پایتون خوش آمدید. برای رفتن به اولین جلسه این دوره، اینجا کلیک کنید. جلسه قبل درمورد بخش دوم حلقه for صحبت کردیم. از دیگر از حلقه های پایتون، while نام دارد. While در لغت یعنی (تا زمانی که!) و تفاوت اصلی این حلقه با for در این است که حلقه while یک شرط را میپذیرد و تا زمانی که آن شرط صحیح است، حلقه تکرار میشود.
برای مثال یک متغیر داریم که مقدار ۱۰۰ را در خود نگه میدارد. می خواهیم هربار یک عدد از این متغیر کم کنیم و هر بار آن را چاپ کنیم. با این شرط که تا زمانی که این عدد بزرگتر مساوی صفر است این کار را ادامه میدهیم.
این برنامه به صورت زیر پیاده سازی میشود:
x = 100 while x >= 0: print(x) x -= 1
در خط اول متغیر را تعریف کردیم و به آن مقدار ۱۰۰ داده ایم. در خط بعدی از حلقه while استفاده کردیم و گفته ایم تا زمانی که متغیر x بزرگتر مساوی ۱۰۰ است، دستورات زیر را اجرا کن.
این حلقه بعد از هربار اجرا کردن بدنه حلقه، شرط را بررسی میکند تا ببیند آیا باز هم باید ادامه بدهد یا خیر؟
در خط سوم مقدار x چاپ میشود و در خط آخر یک عدد از متغیر کسر میگردد. اگر این خط نباشد آنگاه متغیر x دائما ۱۰۰ میماند و برنامه در حلقه گیر میکند.
دستور break
این دستور درون حلقه نوشته میشود (فرقی نمیکند که حلقه while باشد یا for باشد) و هدف آن شکستن حلقه است. هرگاه برنامه به دستور break برسد، از حلقه ای که درون آن است خارج میشود. برای درک بهتر برنامه ی بالا را به شکل زیر تغییر دادیم:
x = 100 while x >= 0: if x == 80: break print(x) x -= 1 print("Finish") # ۱۰۰ # ۹۹ # ۹۸ # ... # ۸۳ # ۸۲ # ۸۱ # Finish
زمانی که x برابر با ۸۰ میشود به break میرسد و برنامه از حلقه خارج شده و کلمه Finish چاپ میشود.
دستور continue
این دستور نیز مانند دستور break درون حلقه نوشته می شود، وقتی در حلقه به دستور continue برسیم، برنامه دستورات حلقه را از سر گیری میکند به این معنی که ادامه دستورات درون حلقه را رها کرده و از اول وارد حلقه میشود. به برنامه زیر توجه کنید:
for i in range(5): if i == 3: continue print(i) # ۰ # ۱ # ۲ # ۴
همینطور که میبینید دقیقا زمانی که متغیر i برابر با ۳ میشود، به دستور continue میرسیم و برنامه از ادامه حلقه صرف نظر میکند و مقدار ۳ چاپ نمیشود.
حلقه بی نهایت
فرض کنید میخواهیم برنامه ای بنویسیم که رمز عبور را از کاربر بگیرد و تا زمانی که کاربر رمز صحیح را وارد نمیکند برنامه همچنان به ورودی گرفتن از کاربر ادامه دهد. ما نمیدانیم که کاربر چندبار قرار است رمز اشتباه وارد کند. پس باید یک حلقه بی نهایت بنویسیم که از کاربر ورودی بگیرد و یک شرط که اگر رمزعبور صحیح بود حلقه را بشکند.
برای نوشتن یک حلقه بی نهایت کافیست شرطی که while میپذیرد همیشه صحیح باشد و مقدار True را برگرداند برای مثال:
While 1=1:
While 1:
While True:
پس به صورت زیر عمل میکنیم:
password = "ABCD" while True: user_pass = input() if user_pass == password: print("Welcome") break
در خط اول رمزعبور پیشفرض را تعریف کرده ایم و بعد وارد یک حلقه بی نهایت میشویم. در این حلقه یک شرط بررسی میشود که زمانی که عبارت وارد شده با رمزعبور پیشورض مطابق بود آنگاه پیغام خوش آمدید را چاپ کرده و سپس از حلقه خارج شود.
در جلسه بعد درمورد بخش اول لیست ها صحبت خواهیم کرد.