فصل ۵ · شروع یادگیری

حلقه‌ها و الگوهای تکرار

شمارش، جمع، میانگین، جست‌وجو و پیدا کردن کوچک‌ترین مقدار را تمرین کن.

۵۰ دقیقهٔ پیشنهادی مطالعه و تمرین۵ بخشتمرین عملی و خودآزمایی

بعد از این فصل می‌توانی…

  • حلقهٔ while و for بسازی.
  • از break و continue درست استفاده کنی.
  • با متغیرهای کمکی داده‌ها را تحلیل کنی.

پیشنهاد برای پیش‌نیاز: تابع‌ها و استفادهٔ دوباره از کد

ویدیوی این فصل

حلقه‌ها و الگوهای تکرار

ویدیوی این فصل هنوز اضافه نشده است. می‌توانی همین حالا آموزش متنی و تمرین‌ها را شروع کنی.

بخش 1

while و شرط پایان

حلقهٔ while تا وقتی شرطش درست است تکرار می‌شود. شرط پیش از هر دور بررسی می‌شود؛ اگر از ابتدا نادرست باشد، بدنه حتی یک بار هم اجرا نمی‌شود.

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

شمارش معکوس

n = 3
while n > 0:
    print(n)
    n = n - 1
print("حرکت!")
خروجی مورد انتظار
3
2
1
حرکت!
بخش 2

for برای پیمایش اعضا

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

سلام به اعضای گروه

for name in ["Sara", "Ali", "Mina"]:
    print("سلام", name)
خروجی مورد انتظار
سلام Sara
سلام Ali
سلام Mina
بخش 3

تفاوت break و continue

break از حلقهٔ فعلی بیرون می‌رود. continue باقی دستورهای همین دور را رد می‌کند و به دور بعد می‌رود. این دو یک کار انجام نمی‌دهند.

در نمونه، عدد منفی نادیده گرفته می‌شود و صفر پایان پردازش است؛ بنابراین عدد ۹ بررسی نخواهد شد.

رد کردن و پایان دادن

for number in [4, -2, 6, 0, 9]:
    if number == 0:
        break
    if number < 0:
        continue
    print(number)
خروجی مورد انتظار
4
6
بخش 4

شمارش، جمع و میانگین

متغیرهای count و total را پیش از حلقه صفر کن. در هر دور count یک واحد زیاد می‌شود و مقدار فعلی به total اضافه می‌شود. میانگین پس از حلقه total / count است.

اگر هیچ داده‌ای نداریم، count صفر است و نباید تقسیم انجام دهیم. این حالت مرزی را از ابتدا در نظر بگیر.

میانگین قدم‌ها

total = 0
count = 0
for value in [6, 8, 10]:
    total = total + value
    count = count + 1
if count > 0:
    print(total / count)
خروجی مورد انتظار
8.0
بخش 5

بزرگ‌ترین، کوچک‌ترین و جست‌وجو

برای کوچک‌ترین یا بزرگ‌ترین مقدار از None به عنوان «هنوز داده‌ای ندیده‌ام» استفاده کن. مقدار اولیهٔ -1 برای تمام داده‌ها مناسب نیست؛ مثلاً بزرگ‌ترینِ چند عدد منفی ممکن است کمتر از -1 باشد.

is None نبود مقدار را بررسی می‌کند. is هویت شیء را می‌سنجد و جایگزین == برای مقایسهٔ عدد و متن نیست. برای یافتن یک عضو هم می‌توان پرچم found را از False به True تغییر داد.

کمترین مقدار و جست‌وجو

smallest = None
found = False
for value in [9, 3, 12]:
    if smallest is None or value < smallest:
        smallest = value
    if value == 3:
        found = True
print(smallest)
print(found)
خروجی مورد انتظار
3
True
حالا نوبت توست

گزارش نمره‌ها

برای نمره‌های ۱۲، ۱۸، ۹ و ۱۷ تعداد نمره‌های حداقل ۱۰، جمع و میانگین تمام نمره‌ها را چاپ کن.

یک راهنمای کوچک

برای همهٔ نمره‌ها جمع را تغییر بده، اما شمارندهٔ قبولی را فقط داخل شرط زیاد کن.

پاسخ پیشنهادی و خروجی
scores = [12, 18, 9, 17]
passed = 0
total = 0
for score in scores:
    total += score
    if score >= 10:
        passed += 1
print(passed)
print(total)
print(total / len(scores))

خروجی نمونه

3
56
14.0

خودآزمایی

پاسخ را انتخاب کن و دلیل آن را بخوان. این بخش برای تمرین است و نمرهٔ رسمی ثبت نمی‌کند.

1. continue چه می‌کند؟
2. چرا برای کمترین مقدار از None شروع می‌کنیم؟