تورفتگی
دو برنامه، همان دو print، دو خروجی متفاوت. بار اول هر دو خط داخلاند و اجرا میشوند: اول lida، بعد tea. بار دوم lida به داخل رفته و بالای آن if False: است؛ آن خط اجرا نمیشود و فقط tea میماند، چون به لبهٔ چپ برگشته.
خطی که اجرا نمیشود
if False: سرِ بلوک است. False یعنی خطهای داخل بلوک را رد کن. print("lida") چهار فاصله جلوتر است، پس داخل است و اجرا نمیشود. print("tea") برگشته سرِ خط، پس بیرون است و اجرا میشود. خروجی یک خط است: tea.
if False:
print("lida")
print("tea")
دستورها همانها هستند. چیزی که عوض شده جای خط است. lida رفته داخل بلوکی که اجرا نمیشود. tea بیرون مانده، پس تنها خطی است که میبینی.
وقتی هر دو داخل باشند
if True: هم سرِ بلوک است، ولی True یعنی بلوک اجرا شود. هر دو print چهار فاصله داخلاند، پس هر دو مال همین سرخطاند. خروجی دو خط است: lida، بعد tea. معنی کامل شرط برای بعد است. اینجا فقط میپرسیم کدام خط داخل است.
if True:
print("lida")
print("tea")
فاصلههای قبل از print را بشمار. چهار تا است. یکی نه. کلید Tab هم نه. در این دوره هر خط داخل بلوک چهار فاصله است.
سه جا برای سه خط
برنامهٔ دوم را اینطور جدا کن. سرخط تصمیم میگیرد. خطِ داخل مال اوست. خطی که به لبهٔ چپ برگشته مال او نیست.
📊 جای هر خط
| خط | جا | اگر سرخط False باشد |
|---|---|---|
| if False: | سرخط، آخرش دونقطه | خودش print نیست |
| print("lida") | چهار فاصله داخل | نه |
| print("tea") | لبهٔ چپ | بله |
فاصله، نه Tab
چهار بار کلید فاصله را بزن. Tab نویسهٔ دیگری است، حتی اگر روی صفحه شبیه فاصله به نظر برسد. اگر Tab و فاصله را قاطی کنی، بلوک یکدست نیست و Python میایستد. عرض را با چشم حدس نزن.
دونقطه جزو سرخط است
بدون دونقطه سرخط تمام نشده. if False بدون : سرِ بلوک نیست. خطِ داخل جایی ندارد که به آن بچسبد. برنامه پیش از چاپ میایستد.
صفحهٔ بعد یادداشت است
بقیهٔ تصمیمها را این صفحه یاد نمیدهد. خط را هم با # شروع نمیکنی. یادداشتی که Python اجرا نمیکند صفحهٔ بعد است. اسم و ورودی هم دیرتر میآیند.
این پنج تا را خودت بگو
- خط داخل بلوک چند فاصله جلوتر است؟ چهار.
- زیر if True: هر دو print اجرا میشوند: اول lida، بعد tea.
- زیر if False: خط print("lida") که داخل است اجرا نمیشود.
- print("tea") روی لبهٔ چپ هنوز اجرا میشود.
- چرا Tab جای آن چهار فاصله را نمیگیرد؟
اینها بلوک را خراب میکنند
- یک یا دو فاصله به داخل بروی
- Tab بزنی، یا Tab را با فاصله قاطی کنی
- دونقطهٔ آخر سرخط را جا بگذاری
- خطی را که باید بیرون بماند به داخل ببری
- انتظار داشته باشی زیر if False: کلمهٔ lida چاپ شود
اگر جمعش کنی
سرخط با دونقطه تمام میشود. بلوک زیرش چهار فاصله داخل است.
if True: بلوک را اجرا میکند. خروجی lida است و بعد tea.
if False: خط داخل را رد میکند. print("tea") در لبهٔ چپ میماند و اجرا میشود.
Tab همان چهار فاصله نیست.
صفحهٔ بعد یادداشتی است که Python اجرا نمیکند.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود