حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش دیباگ و تست‌نویسی در پایتون؛ رفع خطا با تمرین

پیداکردن علت اولیه خطا در پایتون؛ مقدار پیش‌فرض دیکشنری

خواندن خطاهای پایتون و ساخت نمونه بازتولید · 0٪

ممکنه یک خطا روی len دیده بشه، اما مشکل از جایی باشه که مقدار None تولید شده. برای پیداکردن علت اولیه، مقدار ورودی عملیات ناموفق رو دنبال می‌کنیم. دیکشنری get وقتی کلید وجود نداره به‌صورت پیش‌فرض None می‌ده. اگه قرارداد ما بگه نبودن کلید یعنی فهرست خالی، باید این تصمیم رو موقع خواندن داده روشن کنیم.

مثال برای نقش‌های اختیاری یک کاربر مقدار پیش‌فرض خالی می‌ذاره. توی تمرین، برچسب‌ها اختیاری‌اند و len نباید روی None اجرا بشه. خطای رایج گذاشتن except دور len و برگرداندن صفر برای هر استثناست؛ این کار نوع‌های نامعتبر دیگر رو هم پنهان می‌کنه. اینجا فقط حالت نبودن کلید رو مدیریت می‌کنیم و طبق قرارداد، مقدار موجود حتماً یک فهرسته. با اصلاح همون محل تولید مقدار، ادامه تابع ساده باقی می‌مونه. دقت کن فهرست خالی و کلید غایب دو ورودی متفاوت‌اند، حتی اگر خروجی هر دو صفر باشه.

✍️ مثال حل‌شده:

record = {}
roles = record.get("roles", [])
assert len(roles) == 0

حالا نوبت توئه: تابع label_count(record) تعداد اعضای record["labels"] را برگرداند. اگر کلید labels وجود ندارد، آن را فهرست خالی در نظر بگیر. مقدار موجود همیشه فهرست است؛ {} و {"labels":[]} باید 0 و {"labels":["وب","تمرین"]} باید 2 بدهند. دیکشنری را تغییر نده و استثناهای نامرتبط را نپوشان.

فعالیت شما

تابع label_count(record) تعداد اعضای record["labels"] را برگرداند. اگر کلید labels وجود ندارد، آن را فهرست خالی در نظر بگیر. مقدار موجود همیشه فهرست است؛ {} و {"labels":[]} باید 0 و {"labels":["وب","تمرین"]} باید 2 بدهند. دیکشنری را تغییر نده و استثناهای نامرتبط را نپوشان.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

def label_count(record):
    labels = record.get("labels")
    return len(labels)