آشنایی با حلقههای while
حلقهی for مجموعهای را میگیرد و قطعهکدی را یک بار برای هر عضو آن اجرا میکند. در مقابل، حلقهی while تا زمانی که شرط خاصی درست باشد، اجرا میشود.
حلقهی while در عمل
میتوانید از یک حلقهی while برای شمردن دنبالهای از اعداد استفاده کنید. برای مثال حلقهی while زیر از ۱ تا ۵ میشمرد:
در خطّ اوّل شمردن از ۱ را با انتساب مقدار ۱ به متغیّر current_number شروع میکنیم. سپس حلقهی while طوری تنظیم میشود که تا زمانِ کمتر یا مساوی بودنِ current_number از ۵، اجرا شود. کدِ داخلِ حلقه مقدارِ current_number را چاپ کرده و سپس با += آن را یکی زیاد میکند. (عملگر += کوتاهشدهی current_number = current_number + 1 است.)
پایتون تا زمانی حلقه را اجرا میکند که شرطِ current_number <= 5 برقرار باشد. پایتون ۱ را چاپ میکند سپس یکی به آن اضافه میکند تا عدد فعلی ۲ شود. چون ۲ کمتر از ۵ است، آن را چاپ کرده و مجدّداً یکی به آن اضافه میکند تا عدد فعلی ۳ شود و به همین ترتیب ادامه میدهد. به محض بیشتر شدنِ مقدارِ current_number از ۵، اجرای حلقه متوقّف شده و برنامه پایان مییابد:
بیشتر برنامههایی که هرروزه استفاده میکنید شامل حلقههای whileاند. برای مثال، یک بازی به حلقهی while احتیاج دارد که تا زمانی که میخواهید به بازی ادامه دهید، به اجراشدن ادامه دهد و به محض رسیدنِ درخواستِ خروج اجرا شدن را متوقّف کند.
اجازه دادن به کاربر برای انتخاب زمان خروج
برای این که برنامهی parrot.py تا زمانی که کاربر میخواهد، اجرا شود میتوانیم بیشتر خطهای آن را در یک حلقهی while قرار دهیم. یک مقدارِ خروج تعریف میکنیم و تا زمانی که کاربر آن را وارد نکرده باشد، اجرای برنامه ادامه مییابد:
در 1 اعلانی تعریف میکنیم تا به کاربران بگوییم که دو گزینه پیشِ رو دارند: وارد کردن یک پیام یا وارد کردن مقدارِ خروج (در اینجا، ‘quit’). سپس در 2 متغیّر message را مقداردهی میکنیم تا هر مقداری را که کاربر وارد میکند، پیگیری کنیم. متغیّر message را یک رشتهی خالی "" قرار میدهیم تا پایتون در اوّلین اجرای حلقه چیزی برای مقایسه کردن داشته باشد. حلقهی while (3) تا زمانی که مقدار message برابر با ‘quit’ نباشد اجرا میشود.
در اوّلین ورود به حلقه، message تنها یک رشتهی خالی است، پس پایتون میتواند وارد حلقه شود. در message = input(prompt) پایتون اعلان را نمایش میدهد و منتظر پاسخ کاربران میماند. هر آنچه وارد کنند به message نسبت داده شده و چاپ میشود؛ سپس پایتون شرطِ عبارتِ while را دوباره ارزیابی میکند. سرانجام زمانی که کاربران ‘quit’ را وارد میکنند، پایتون اجرای حلقهی while را متوقّف کرده و برنامه پایان مییابد:
|
|
این برنامه به خوبی کار میکند، تنها ایراد آن این است که واژهی ‘quit’ را مثل یک پیام واقعی چاپ میکند. یک آزمون if ساده این مشکل را حل میکند:
اکنون برنامه پیش از نمایش پیام یک بررسی سریع انجام میدهد و تنها در صورتی آن را چاپ میکند که با مقدارِ خروج برابر نباشد:
|
|