حلقه while در پایتون
حلقه while در پایتون
حلقه while و توابع درونساخت پایتون
در مباحث قبلی دیدیم که چگونه با حلقه for میتوان روی بازهای از اعداد یا اعضای یک لیست با تعداد تکرار مشخص پیمایش کرد. اما در دنیای واقعی برنامهنویسی، همیشه از قبل نمیدانیم یک عملیات دقیقاً چند بار باید تکرار شود.
برای مثال:
- تا چه زمانی باید منتظر پاسخ کاربر باشیم؟ (شاید بار اول پاسخ دهد، شاید بار دهم).
- تا چه زمانی باید دادهها را بخوانیم؟ (تا وقتی به انتهای فایل برسیم یا ارتباط قطع شود).
- در سیستمهای مانیتورینگ تا کی باید سیگنال ثبت شود؟ (تا زمانی که کاربر دکمه توقف را فشار دهد).
در این سناریوها، ابزار اصلی ما حلقه while است.
۱. حلقه while چیست؟
کلمه while در زبان انگلیسی به معنی «تا زمانی که» است. در پایتون، حلقه while به مفسر دستور میدهد:

«تا زمانی که شرط جلوی من درست (
True) است، کدهای داخل بدنه را پشت سر هم اجرا کن؛ به محض اینکه شرط نادرست (False) شد، اجرای حلقه را تمام کن و به خط بعد برو.»
نحوه اجرای خطبهخط (Execution Flow):
- پایتون به خط
whileمیرسد و شرط را بررسی میکند. - اگر شرط
Trueباشد، وارد بدنه (کدهای دارای تورفتگی) میشود و آنها را اجرا میکند. - پس از رسیدن به آخرین خط بدنه، دوباره برمیگردد به خط شرط!
- اگر همچنان شرط
Trueبود، دوباره تکرار میکند. - این فرآیند آنقدر تکرار میشود تا شرط به
Falseتغییر کند؛ سپس کنترل برنامه به بعد از حلقه منتقل میشود.
شباهت while با ساختار for + break:
برای درک شهودی، به یاد بیاورید که وقتی در حلقه for مینوشتیم if condition: break، حلقه به محض رخ دادن آن شرط خاتمه مییافت. در واقع حلقه while معادل یک حلقه بیپایان است که پایتون در ابتدای هر دور، بررسی میکند آیا شرط ادامه برقرار است یا خیر.
مهمترین کاربردهای while:
الگوریتمهای همگرایی و تقریب عددی: تکرار محاسبات تا زمانی که خطای محاسباتی از یک آستانه معین کمتر شود.یابی میشود.
منوهای برنامهها و بازیها: برنامه باید باز بماند تا کاربر گزینه خروج را بزند.
اعتبارسنجی ورودی کاربر: تا زمانی که کاربر ورودی نامعتبر وارد میکند، خطا داده و مجدداً از او ورودی بخواهد.
مثال 1: شمارنده ساده
در این حالت میدانیم چند بار تکرار میخواهیم، اما آن را با شرط while پیاده میکنیم تا مفهوم شمارنده و افزایش متغیر را یاد بگیریم.
- صورت مسئله: برنامهای بنویسید که با استفاده از یک متغیر شمارنده، اعداد ۱ تا ۵ را یکییکی چاپ کند و در پایان پیام اتمام را نمایش دهد.
# تعریف شمارنده اولیه
count = 1
# شرط حلقه: تا زمانی که شمارنده کوچکتر یا مساوی ۵ است
while count <= 5:
print(f"شماره گام: {count}")
# بسیار مهم: افزایش شمارنده تا از حلقه بینهایت جلوگیری شود
count += 1
print("پایان اجرای حلقه مقدماتی.")
مثال 2: دریافت ورودی تا شرط خروج (input)
در این سطح، تعداد دفعات تکرار از قبل مشخص نیست و به تصمیم لحظهای کاربر بستگی دارد.
- صورت مسئله: برنامهای بنویسید که مدام از کاربر نام شهر دلخواهش را بپرسد و آن را با پیامی نمایش دهد. برنامه تنها زمانی متوقف شود که کاربر عبارت
exitرا تایپ کند.
# تعریف متغیر با مقدار اولیه تهی
city = ""
# تا زمانی که مقدار city برابر 'exit' نباشد، حلقه ادامه دارد
while city.lower() != "exit":
city = input("نام یک شهر را وارد کنید (یا عبارت 'exit' را برای خروج بنویسید): ")
# بررسی میکنیم که اگر خود کلمه exit بود، پیام چاپ نشود
if city.lower() != "exit":
print(f"شهر ثبتشده: {city}")
print("شما از برنامه خارج شدید.")
نتیجهگیری
حلقه while زمانی که انتهای فرآیند تکرار نامشخص است یا نیاز به تصمیمگیری بر اساس شرایط پویا (Dynamic Conditions) داریم، قویترین ابزار ماست. درک عمیق از تفاوت حلقهها و تسلط بر توابع پایه، سنگ بنای تسلط بر الگوریتمها و پروژههای واقعی برنامهنویسی است.
