آموزش پایتون - حلقه‌های While

حلقه while در پایتون

یک حلقه while در زبان برنامه‌نویسی پایتون تا زمانی که عبارت بولی (boolean) مشخص‌شده درست (true) باشد، یک دستور هدف را به‌طور تکراری اجرا می‌کند. این حلقه با کلیدواژه while شروع می‌شود که پس از آن یک عبارت بولی و علامت دو نقطه (:) قرار می‌گیرد. سپس، یک بلوک توفرورفته از دستورات آغاز می‌شود.

در اینجا، دستور(ات) می‌تواند یک دستور واحد یا بلوکی از دستورات با تورفتگی یکنواخت باشد. شرط می‌تواند هر عبارتی باشد و true به معنای هر مقدار غیرصفر است. به محض اینکه عبارت نادرست (false) شود، کنترل برنامه به خط بلافاصله پس از حلقه منتقل می‌شود.

اگر شرط نادرست نشود، حلقه به اجرا ادامه می‌دهد و متوقف نمی‌شود مگر اینکه به‌طور اجباری متوقف گردد. به چنین حلقه‌ای، حلقه بی‌نهایت گفته می‌شود که در یک برنامه کامپیوتری نامطلوب است.

سنتکس حلقه while

سنتکس یک حلقه while در زبان برنامه‌نویسی پایتون به این صورت است -

while expression:
   statement(s)

در پایتون، تمام دستوراتی که پس از یک ساختار برنامه‌نویسی به یک اندازه فاصله تورفتگی دارند، به عنوان بخشی از یک بلوک کد واحد در نظر گرفته می‌شوند. پایتون از تورفتگی به عنوان روش خود برای گروه‌بندی دستورات استفاده می‌کند.

فلوچارت حلقه While

نمودار جریان زیر حلقه while را نشان می‌دهد -

while loop

مثال ۱

مثال زیر نحوه کار حلقه while را نشان می‌دهد. در اینجا، تکرار تا زمانی که مقدار count به ۵ برسد اجرا می‌شود.

count=0
while count<5:
   count+=1
   print ("Iteration no. {}".format(count))

print ("End of while loop")

با اجرا، این کد خروجی زیر را تولید خواهد کرد -

Iteration no. 1
Iteration no. 2
Iteration no. 3
Iteration no. 4
Iteration no. 5
End of while loop

مثال ۲

در اینجا مثال دیگری از استفاده از حلقه while آورده شده است. برای هر تکرار، برنامه درخواست ورودی کاربر می‌کند و تا زمانی که کاربر یک رشته غیرعددی وارد کند به تکرار ادامه می‌دهد. تابع ()isnumeric در صورتی که ورودی یک عدد صحیح باشد true و در غیر این صورت false برمی‌گرداند.

var = '0'
while var.isnumeric() == True:
   var = "test"
   if var.isnumeric() == True:
      print ("Your input", var)
print ("End of while loop")

با اجرای کد، خروجی زیر تولید می‌شود -

enter a number..10
Your input 10
enter a number..100
Your input 100
enter a number..543
Your input 543
enter a number..qwer
End of while loop

حلقه بی‌نهایت while در پایتون

اگر یک شرط هرگز FALSE نشود، حلقه به یک حلقه بی‌نهایت تبدیل می‌شود. هنگام استفاده از حلقه‌های while باید مراقب باشید، زیرا این احتمال وجود دارد که این شرط هرگز به مقدار FALSE ارزیابی نشود. این موضوع منجر به حلقه‌ای می‌شود که هرگز پایان نمی‌یابد. به چنین حلقه‌ای، حلقه بی‌نهایت می‌گویند.

یک حلقه بی‌نهایت ممکن است در برنامه‌نویسی کلاینت/سرور مفید باشد؛ جایی که سرور باید به‌طور مداوم اجرا شود تا برنامه‌های کلاینت بتوانند در صورت نیاز با آن ارتباط برقرار کنند.

مثال

بیایید مثالی بزنیم تا متوجه شویم حلقه بی‌نهایت در پایتون چگونه کار می‌کند -

var = 1
while var == 1 : # This constructs an infinite loop
   num = int(input("Enter a number :"))
   print ("You entered: ", num)
print ("Good bye!")

با اجرا، این کد خروجی زیر را تولید خواهد کرد -

Enter a number :20
You entered: 20
Enter a number :29
You entered: 29
Enter a number :3
You entered: 3
Enter a number :11
You entered: 11
Enter a number :22
You entered: 22
Enter a number :Traceback (most recent call last):
   File "examples\test.py", line 5, in
      num = int(input("Enter a number :"))
KeyboardInterrupt
مثال بالا وارد یک حلقه بی‌نهایت می‌شود و برای خروج از برنامه باید از کلیدهای CTRL+C استفاده کنید.

حلقه while-else در پایتون

پایتون از داشتن یک دستور else مرتبط با حلقه while پشتیبانی می‌کند. اگر دستور else همراه با یک حلقه while استفاده شود، قبل از اینکه کنترل به خط اصلی اجرای برنامه منتقل شود، هنگامی که شرط نادرست (false) می‌شود دستور else اجرا می‌گردد.

فلوچارت حلقه While با دستور else

نمودار جریان زیر نحوه استفاده از دستور else همراه با حلقه while را نشان می‌دهد -

output hello world

مثال

مثال زیر ترکیب یک دستور else با دستور while را نشان می‌دهد. تا زمانی که count کمتر از ۵ است، تعداد تکرار چاپ می‌شود. به محض اینکه به ۵ می‌رسد، دستور print در بلوک else اجرا می‌شود، قبل از اینکه کنترل به دستور بعدی در برنامه اصلی منتقل شود.

count=0
while count<5:
   count+=1
   print ("Iteration no. {}".format(count))
else:
   print ("While loop over. Now in else block")
print ("End of while loop")

با اجرای کد بالا، خروجی زیر چاپ خواهد شد -

Iteration no. 1
Iteration no. 2
Iteration no. 3
Iteration no. 4
Iteration no. 5
While loop over. Now in else block
End of while loop

مجموعه دستورات تک‌خطی (Single Statement Suites)

شبیه به سنتکس دستور if، اگر عبارت while شما تنها شامل یک دستور باشد، می‌توان آن را در همان خط سربرگ while قرار داد.

مثال

مثال زیر نحوه استفاده از عبارت تک‌خطی while را نشان می‌دهد.

flag = 0
while (flag): print ("Given flag is really true!")
print ("Good bye!")

وقتی این کد را اجرا می‌کنید، خروجی زیر نمایش داده می‌شود -

Good bye!

مقدار flag را به "1" تغییر دهید و برنامه بالا را امتحان کنید. اگر این کار را انجام دهید، وارد حلقه بی‌نهایت می‌شود و برای خروج باید کلیدهای CTRL+C را فشار دهید.

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.