تکرار
برای جلوگیری از دویاره نویسی در برنامهها از ساختار حلقه (Loop) یا تکرار (Iteration) میوان استفاده کرد.
عبارت while
برای شروع آشنایی با عبارت و در حقیقت ساختار while
به مثال زیر توجه کنید:
= 5
n while n > 0:
print(n)
= n - 1
n
print('Blastoff!')
5
4
3
2
1
Blastoff!
به این معنی که “تا وقتی که n
بزرگتر از 0 است، مقدار n
را نمایش بده و سپس مقدار n
را به اندازه 1 واحد کاهش بده.
وقتی مقدار n
به 0 رسید، کنترل برنامه از دستور while
خارج میشود و کلمه Blastoff
را نمایش میدهد!
ساختار استفاده از عبارت while
به شرح زیر است:
شرایط را ارزیابی کنید، درست یا غلط را نشان دهید.
اگر شرط نادرست است، از دستور
while
خارج شده و در دستور بعدی اجرا را ادامه دهید.اگر شرط درست است، بدنه را اجرا کنید و سپس به مرحله 1 برگردید.
این نوع جریان حلقه نامیده میشود زیرا در مرحله سوم به سمت بالا باز میگردد. هر بار که بدنه حلقه را اجرا میکنیم، آن را یک تکرار مینامیم. برای حلقه بالا، میگوییم: «پنج تکرار داشت»، یعنی بدنه حلقه پنج بار اجرا شده است.
بدنه حلقه باید مقدار یک یا چند متغیر را تغییر دهد تا در نهایت شرط نادرست شود و حلقه خاتمه یابد.
ما متغیری را که هر بار که حلقه اجرا میشود و مقدار متغیر تغییر میکند، فراخوانی میکنیم و نیز زمانی که حلقه، مقدار متغیر تکرار را به پایان میرساند، اگر متغیر تکراری وجود نداشته باشد، حلقه برای همیشه تکرار میشود و در نتیجه یک حلقه بی نهایت ایجاد میشود.
حلقههای بینهایت
در مورد شمارش معکوس، میتوانیم ثابت کنیم که حلقه خاتمه مییابد زیرا میدانیم که مقدار n
محدود است و میبینیم که مقدار n
هر بار از طریق حلقه کوچکتر میشود، بنابراین در نهایت باید به 0 برسیم. در سایر مواقع، یک حلقه بینهایت Infinite loops است زیرا هیچ متغیر تکراری ندارد (به شبه شرط منطقی داخل پرانتز در عبارت break
دقت کنید).
کاربرد حلقه بینهایت در این است که برخی اوقات تا زمانی که نیمی از بدنه را طی نکنیم، نمیدانیم آیا زمان پایان دادن به یک حلقه فرا رسیده است. در این صورت میتوانیم یک حلقه بینهایت را عمداً بنویسیم و سپس از دستور break
برای پرش از حلقه استفاده کنیم.
= 10
n while True:
print(n, end=' ')
= n - 1
n
print('Done!')
اگر مرتکب اشتباه شویم و این کد را اجرا کنیم، یاد خواهیم گرفت که چگونه فرآیند و یا مسیر پایتون را در سیستم خود متوقف کنیم و یا آن را خاتمه دهیم. این برنامه برای همیشه یا تا زمانی که باتری ما تمام شود اجرا میشود زیرا عبارت منطقی در بالای حلقه به دلیل این که عبارت مقدار ثابت True
است همیشه درست است.
مثال زیر، کاربرد break
را به خوبی نشان میدهد:
while True:
= input('> ')
line if line == 'done':
break
print(line)
print('Done!')
اتمام تکرار فعلی و ادامه تکرار بعدی
گاهی اوقات ما در یک تکرار یک حلقه هستیم و میخواهیم تکرار فعلی را تمام کنیم و بلافاصله به تکرار بعدی برویم. در آن صورت میتوانیم از دستور continue
برای پرش به تکرار بعدی استفاده کنیم، بدون اینکه بدنه حلقه برای تکرار فعلی تمام شود.
while True:
= input('> ')
line if line[0] == '#':
continue
if line == 'done':
break
print(line)
print('Done!')
حلقههای معین با استفاده از
گاهی اوقات میخواهیم مجموعهای از چیزها را مانند فهرستی از کلمات، خطوط یک فایل یا فهرستی از اعداد را بصورت حلقهای ایجاد کنیم. وقتی لیستی از چیزهایی که باید از طریق آنها حلقه بزنیم داریم، می توانیم با استفاده از دستور for
یک حلقه معین بسازیم. دستور while
را یک حلقه نامعین می نامیم زیرا به سادگی حلقه میزند تا زمانی که برخی از شرطها False
شود، در حالی که حلقه for
در مجموعهای شناخته شده از آیتمها حلقه میزند بنابراین به تعداد آیتمهای مجموعه، تکرار میشود.
= ['Joseph', 'Glenn', 'Sally']
friends for friend in friends:
print('Happy New Year: ', friend)
print('Done!')
Happy New Year: Joseph
Happy New Year: Glenn
Happy New Year: Sally
Done!