در حال بارگذاری...

حلقهٔ while

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

cups را 0 بگذارید. سؤال cups < 3 است. صفر قبول می‌شود، پس 0 نوشته می‌شود و cups یکی جلو می‌رود. همین برای 1 و بعد برای 2 تکرار می‌شود. بعد از نوشتن 2، cups برابر 3 است. سؤال رد می‌شود. 3 روی صفحه نیست؛ داخل cups مانده و درست به همین خاطر سؤال رد شده است.

0 و 1 و 2، بعد توقف

python
cups = 0
while cups < 3:
    print(cups)
    cups = cups + 1

سه خط می‌بینید: 0، بعد 1، بعد 2. cups بعد از حلقه 3 است. خودِ حلقه آن 3 را چاپ نمی‌کند، چون print فقط وقتی نوبت می‌گیرد که سؤال قبول شده باشد. اگر بخواهید 3 را ببینید، print را هم‌تراز while بنویسید، بیرون از حلقه.

از اول خارج از حد، پس خط‌های تورفته نوبت نمی‌گیرند

cups را پیش از while برابر 3 بگذارید. همان سؤال اول رد می‌شود. خط‌های داخل حلقه، حتی یک بار، اجرا نمی‌شوند. done را هم‌تراز while نوشته‌ایم. جزو حلقه نیست و یک بار نوشته می‌شود، بعد از اینکه while تصمیم گرفته بایستد.

حلقه رد می‌شود، بعد done

python
cups = 3
while cups < 3:
    print(cups)
    cups = cups + 1
print("done")

صفحه فقط done دارد. عددی در کار نیست. print(cups) داخل حلقه بود و حلقه شروع نشد.

خط cups = cups + 1 عدد را جلو می‌برد تا بالاخره سؤال رد شود. آن را بردارید: cups روی 0 می‌ماند، cups < 3 همیشه True است، و 0 پشت سر هم نوشته می‌شود. برنامه از آن حلقه بیرون نمی‌آید.

بعد از while دونقطه لازم است، مثل for و if. خط‌های تکرار چهار فاصله تورفته‌اند. حرف اول while کوچک است. While با W بزرگ را Python نمی‌شناسد و برنامه می‌ایستد.

صفحهٔ بعد می‌تواند زودتر قطع کند

این صفحه صبر می‌کند تا خودِ سؤال False شود. صفحهٔ بعد کار دیگری دارد: حلقه را بشکند، یا فقط یک دور را رد کند، پیش از آنکه سؤال خودش رد شده باشد.

اول حدس بزنید

  1. cups از 0 شروع می‌شود و سؤال cups < 3 است. کدام عددها نوشته می‌شوند؟
  2. بعد از حلقه، چه عددی در cups مانده، هرچند نوشته نشده؟
  3. cups از 3 شروع می‌شود و done هم‌تراز while است. چه می‌آید؟
  4. cups = cups + 1 را حذف می‌کنید. حلقه تمام می‌شود؟

جایی که اشتباه پیش می‌آید

  • 3 آخر را یکی از خط‌های چاپ‌شده گرفتن
  • انتظار یک عدد، وقتی cups پیش از while از قبل 3 است
  • جا گذاشتن cups = cups + 1 و منتظر ماندن برای خط آخری که هرگز نمی‌آید
  • جا گذاشتن دونقطه بعد از while
  • نوشتن While با حرف بزرگ

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

while پیش از هر دور می‌پرسد. خط‌های تورفته فقط تا وقتی اجرا می‌شوند که جواب True باشد.
از 0، با cups < 3، شما 0 و 1 و 2 را می‌بینید. cups آن‌وقت 3 است و آن 3 چاپ نمی‌شود.
اگر سؤال از اول False باشد، آن خط‌های تورفته هیچ‌وقت اجرا نمی‌شوند و خط هم‌تراز while یک بار اجرا می‌شود.
بدون cups = cups + 1 سؤال True می‌ماند و حلقه تمام نمی‌شود.
صفحهٔ بعد می‌تواند حلقه را بشکند یا یک دور را رد کند.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
5
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود