Kahibaro
Discord Login Register

شمارنده‌های حلقه

نقش شمارنده در حلقه‌ها

در فصل حلقه‌ها با for و while آشنا شده‌اید. در این بخش روی یک ایدهٔ مهم تمرکز می‌کنیم: شمارندهٔ حلقه.

شمارندهٔ حلقه متغیری است که داخل حلقه مقدارش را (معمولاً عددی) تغییر می‌دهید تا:

این شمارنده می‌تواند:

در ادامه حالت‌های رایج را می‌بینیم.

شمارنده در حلقهٔ `for` با `range()`

شایع‌ترین نوع شمارنده در پایتون همراه با for و range() است.

پیمایش با اندیس (index)

اگر می‌خواهید هم به شمارهٔ خانه (اندیس) دسترسی داشته باشید و هم به مقدار، از شمارنده استفاده می‌کنید:

names = ["علی", "سارا", "مریم"]
for i in range(len(names)):
    print(i, names[i])

خروجی:

0 علی
1 سارا
2 مریم

اینجا:

شمارنده با `range(start, stop, step)`

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

for i in range(1, 6):  # از 1 تا 5
    print("شماره حلقه:", i)

با گام (step) سفارشی:

for i in range(0, 11, 2):  # 0، 2، 4، ...، 10
    print(i)

اینجا i تنها نقش «شمردن» ندارد، بلکه الگوی تغییر (هر دو تا یک‌بار) را هم مشخص می‌کند.

شمارندهٔ معکوس

برای شمردن از بالا به پایین:

for i in range(5, 0, -1):
    print(i)
print("پایان!")

اینجا:

شمارنده در حلقهٔ `while`

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

مثال ساده

i = 1                # مقدار اولیهٔ شمارنده
while i <= 5:        # شرط تکرار
    print("دور شماره:", i)
    i = i + 1        # به‌روزرسانی شمارنده

نکته‌ها:

همان مثال با +=:

i = 1
while i <= 5:
    print(i)
    i += 1   # کوتاه‌تر

شمارنده با گام‌های دیگر

لازم نیست همیشه ۱ واحد اضافه کنید:

i = 0
while i <= 10:
    print(i)
    i += 2

یا شمارندهٔ معکوس:

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

شمارنده برای جمع، میانگین، حدس زدن و …

شمارنده تنها برای کنترل تعداد دورها نیست؛ می‌تواند برای شمردن یک اتفاق هم استفاده شود.

شمردن تعداد تلاش‌ها

secret = 7
tries = 0
while True:
    guess = int(input("حدس شما: "))
    tries += 1
    if guess == secret:
        print("آفرین! در", tries, "تلاش حدس زدی.")
        break

اینجا:

شمردن تعداد مواردی که یک شرط برقرار است

مثلاً می‌خواهیم بشماریم چند عدد زوج در لیست داریم:

numbers = [3, 4, 8, 5, 10, 11]
even_count = 0  # شمارنده
for n in numbers:
    if n % 2 == 0:
        even_count += 1
print("تعداد اعداد زوج:", even_count)

even_count شمارنده‌ای است که فقط وقتی شرط برقرار است زیاد می‌شود.

محاسبهٔ مجموع با کمک شمارندهٔ حلقه

گاهی شمارنده مثل i برای اندیس به‌کار می‌رود و متغیر دیگری مجموع را نگه می‌دارد:

scores = [18, 15, 20]
total = 0
for i in range(len(scores)):
    total += scores[i]
print("جمع نمره‌ها:", total)

اینجا:

شمارنده و `enumerate`

وقتی روی یک مجموعه با for می‌چرخید و هم به اندیس نیاز دارید هم به مقدار، یک الگوی رایج این است:

items = ["کتاب", "خودکار", "دفتر"]
index = 0
for item in items:
    print(index, item)
    index += 1

پایتون برای این کار تابع کمکی enumerate دارد که شمارنده را برایتان مدیریت می‌کند (توضیح کامل در فصل‌های بعدی داده می‌شود). فقط ایده را ببینید:

items = ["کتاب", "خودکار", "دفتر"]
for index, item in enumerate(items):
    print(index, item)

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

چند الگوی رایج شمارنده

۱. حلقه‌ با حداکثر تعداد تلاش

مثال: اجازهٔ حداکثر ۳ تلاش برای ورود رمز:

password = "1234"
tries = 0
max_tries = 3
while tries < max_tries:
    guess = input("رمز را وارد کنید: ")
    if guess == password:
        print("ورود موفق!")
        break
    else:
        print("اشتباه بود.")
        tries += 1
if tries == max_tries:
    print("تعداد تلاش‌ها تمام شد.")

۲. تولید جدول ضرب با شمارنده

number = int(input("عدد را وارد کنید: "))
for i in range(1, 11):
    print(number, "x", i, "=", number * i)

i شمارنده‌ای است که سطرهای جدول ضرب را مشخص می‌کند.

۳. شمارنده‌ی حلقه برای منو

while True:
    print("1) جمع")
    print("2) تفریق")
    print("3) خروج")
    choice = input("انتخاب شما: ")
    if choice == "3":
        print("خداحافظ")
        break

در اینجا ظاهراً «شمارندهٔ عددی» نداریم؛ اما خود حلقه تعداد دفعات نمایش منو را می‌شمارد. اگر بخواهیم تعداد دفعات استفاده را هم بدانیم:

run_count = 0
while True:
    print("1) جمع")
    print("2) تفریق")
    print("3) خروج")
    choice = input("انتخاب شما: ")
    run_count += 1
    if choice == "3":
        print("برنامه", run_count, "بار اجرا شد.")
        break

اشتباهات رایج با شمارنده‌ها

۱. فراموش کردن به‌روزرسانی شمارنده در while:

i = 1
while i <= 5:
    print(i)
    # i += 1  # فراموش شده → حلقه بی‌نهایت

۲. استفادهٔ اشتباه از شرط:

i = 1
while i >= 1:  # این شرط همیشه درست است اگر i را افزایش دهید
    print(i)
    i += 1

۳. استفادهٔ نامفهوم از نام شمارنده:

x = 0
while x < 10:
    # x = x + 1
    x += 1

اسم‌های خیلی کلی مثل x می‌تواند کد را مبهم کند. نام‌های بهتر:

تمرین برای خودتان

برای تمرین شمارنده‌ها، می‌توانید این ایده‌ها را پیاده‌سازی کنید:

  1. برنامه‌ای بنویسید که از کاربر ۵ عدد بگیرد و:
    • مجموع
    • و میانگین آن‌ها را با استفاده از شمارنده و جمع‌کننده حساب کند.
  2. برنامه‌ای بنویسید که یک عدد n بگیرد و مجموع اعداد ۱ تا n را با حلقهٔ for و شمارنده حساب کند.
  3. برنامه‌ای بنویسید که یک رشته از کاربر بگیرد و با حلقه تعداد حروف a یا A را بشمارد.

در همهٔ این تمرین‌ها، سعی کنید به این سه سؤال توجه کنید:

Views: 6

Comments

Please login to add a comment.

Don't have an account? Register now!