تکرار

اصلاح شده

2025-07-28

برای جلوگیری از دویاره نویسی در برنامه‌ها از ساختار حلقه (Loop) یا تکرار (Iteration) می‌وان استفاده کرد.

عبارت while

برای شروع آشنایی با عبارت و در حقیقت ساختار while به مثال زیر توجه کنید:

n = 5
while n > 0:
    print(n)
    n = n - 1

print('Blastoff!')
5
4
3
2
1
Blastoff!

به این معنی که “تا وقتی که n بزرگتر از 0 است، مقدار n را نمایش بده و سپس مقدار n را به اندازه 1 واحد کاهش بده.

وقتی مقدار n به 0 رسید، کنترل برنامه از دستور while خارج می‌شود و کلمه Blastoff را نمایش می‌دهد!

ساختار استفاده از عبارت while به شرح زیر است:

  1. شرایط را ارزیابی کنید، درست یا غلط را نشان دهید.

  2. اگر شرط نادرست است، از دستور while خارج شده و در دستور بعدی اجرا را ادامه دهید.

  3. اگر شرط درست است، بدنه را اجرا کنید و سپس به مرحله 1 برگردید.

این نوع جریان حلقه نامیده می‌شود زیرا در مرحله سوم به سمت بالا باز می‌گردد. هر بار که بدنه حلقه را اجرا می‌کنیم، آن را یک تکرار می‌نامیم. برای حلقه بالا، می‌گوییم: «پنج تکرار داشت»، یعنی بدنه حلقه پنج بار اجرا شده است.

بدنه حلقه باید مقدار یک یا چند متغیر را تغییر دهد تا در نهایت شرط نادرست شود و حلقه خاتمه یابد.

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

حلقه‌های بی‌نهایت

در مورد شمارش معکوس، می‌توانیم ثابت کنیم که حلقه خاتمه می‌یابد زیرا می‌دانیم که مقدار n محدود است و می‌بینیم که مقدار n هر بار از طریق حلقه کوچکتر می‌شود، بنابراین در نهایت باید به 0 برسیم. در سایر مواقع، یک حلقه بی‌نهایت Infinite loops است زیرا هیچ متغیر تکراری ندارد (به شبه شرط منطقی داخل پرانتز در عبارت break دقت کنید).

کاربرد حلقه بی‌نهایت در این است که برخی اوقات تا زمانی که نیمی از بدنه را طی نکنیم، نمی‌دانیم آیا زمان پایان دادن به یک حلقه فرا رسیده است. در این صورت می‌توانیم یک حلقه بی‌نهایت را عمداً بنویسیم و سپس از دستور break برای پرش از حلقه استفاده کنیم.

n = 10
while True:
  print(n, end=' ')
  n = n - 1

print('Done!')

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

مثال زیر، کاربرد break را به خوبی نشان می‌دهد:

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

اتمام تکرار فعلی و ادامه تکرار بعدی

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

while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

حلقه‌های معین با استفاده از

گاهی اوقات می‌خواهیم مجموعه‌ای از چیزها را مانند فهرستی از کلمات، خطوط یک فایل یا فهرستی از اعداد را بصورت حلقه‌ای ایجاد کنیم. وقتی لیستی از چیزهایی که باید از طریق آنها حلقه بزنیم داریم، می توانیم با استفاده از دستور for یک حلقه معین بسازیم. دستور while را یک حلقه نامعین می نامیم زیرا به سادگی حلقه می‌زند تا زمانی که برخی از شرط‌ها False شود، در حالی که حلقه for در مجموعه‌ای شناخته شده از آیتم‌ها حلقه می‌زند بنابراین به تعداد آیتم‌های مجموعه، تکرار می‌شود.

friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year: ', friend)
print('Done!')
Happy New Year:  Joseph
Happy New Year:  Glenn
Happy New Year:  Sally
Done!