راهنمای خطا‌ها در داوری تمرین‌ها


در طول این کالج، هنگام ارسال پاسخ‌های خود برای تمرین‌ها، ممکن است با انواع گوناگونی از خطاها مواجه شوید. سیستم داوری کوئرا به منظور ارزیابی و اعلام نتیجه اجرای کد شما، ممکن است خطاهای زیر را گزارش دهد:

خطای محدودیت زمان (Time Limit Exceeded)🔗

هر مسئله‌ی برنامه‌نویسی دارای یک محدودیت زمانی مشخص است. پاسخ ارسالی شما باید بتواند تمامی تست‌های مربوط به آن مسئله را در زمانی کمتر از این محدودیت اجرا نماید. در صورتی که زمان اجرای برنامه برای هر تست از حد مجاز فراتر رود، سیستم داوری اجرای برنامه را متوقف کرده و خطای محدودیت زمان را برای آن تست گزارش می‌دهد.

علل رایج بروز این خطا:

  • الگوریتم ناکارآمد: استفاده از الگوریتم‌های با پیچیدگی زمانی بالا که برای ورودی‌های بزرگ زمان زیادی نیاز دارند.
  • حلقه‌های بی‌نهایت: وجود حلقه‌هایی در کد که به درستی خاتمه نمی‌یابند و اجرای برنامه را برای مدت نامحدود ادامه می‌دهند.
  • محاسبات غیرضروری: انجام محاسبات اضافی و غیرضروری که زمان اجرای برنامه را افزایش می‌دهند.

خطای محدودیت حافظه (Memory Limit Exceeded)🔗

علاوه‌بر محدودیت زمان، هر مسئله در کوئرا دارای محدودیت حافظه نیز می‌باشد. این بدان معناست که برنامه‌ی ارسالی شما در حین اجرا و برای هر تست، نباید از حافظه‌ای بیش از مقدار تعیین‌شده استفاده نماید. در صورت تجاوز از این محدودیت، سیستم داوری برنامه را متوقف کرده و خطای محدودیت حافظه را به‌عنوان نتیجه‌ی تست گزارش می‌دهد.

علل رایج بروز این خطا:

  • ذخیره‌سازی داده‌های حجیم: استفاده از داده‌ساختارهایی که حافظه زیادی اشغال می‌کنند، مانند آرایه‌های بزرگ یا لیست‌های بسیار طولانی.
  • بازگشت‌های عمیق: استفاده بیش از حد از توابع بازگشتی که باعث مصرف حافظه‌ی پشته (Stack) می‌شوند.

خطای زمان اجرا (Runtime Error)🔗

خطای زمان اجرا یا Runtime Error زمانی رخ می‌دهد که برنامه در حین اجرا با مشکل مواجه شده و قادر به ادامه‌ی کار نباشد. این خطا که معمولاً به عنوان Exception نیز شناخته می‌شود، می‌تواند به دلایل مختلفی ایجاد گردد:

علل رایج بروز این خطا:

  • تقسیم بر صفر: انجام عمل تقسیم بر عدد صفر که از نظر ریاضی تعریف نشده‌است.
  • خطاهای ورودی/خروجی: مشکلات مربوط به خواندن داده از ورودی یا نوشتن داده به خروجی.
  • شاخص خارج از محدوده (IndexError): دسترسی به عنصری در یک لیست یا آرایه با استفاده از شاخص نامعتبر (خارج از محدوده‌ی مجاز).
  • کلید ناموجود (KeyError): تلاش برای دسترسی به یک کلید ناموجود در یک دیکشنری.
  • تبدیل نوع نامعتبر (ValueError یا TypeError): تلاش برای تبدیل یک مقدار به نوع داده‌ی نامعتبر یا انجام عملیاتی بر روی داده‌هایی با نوع نامناسب؛ مانند جمع عدد با رشته.

خطای نحوی (Syntax Error)🔗

خطای نحوی زمانی رخ می‌دهد که کد ارسالی شما با قواعد نگارشی (Syntax) زبان پایتون مطابقت نداشته باشد و به همین دلیل، مفسر پایتون نتواند برنامه را به‌درستی تجزیه و اجرا کند.

علل رایج بروز این خطا:

  • اشتباهات تایپی: غلط املایی در کلمات کلیدی یا نام متغیرها یا توابع.
  • فراموش کردن علامت‌های نگارشی: جا انداختن پرانتز، علامت نقل قول، دونقطه، ویرگول و سایر علامت‌های نگارشی ضروری.
  • اشتباه در indentation: عدم رعایت صحیح indentation در بلاک‌های کد (مانند حلقه‌ها، شرط‌ها و توابع).
  • استفاده‌ی نادرست از کلمات کلیدی: به کار بردن اشتباه کلمات کلیدی رزروشده‌ی پایتون.

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

در صورتی که برخی اصطلاحات این درس‌نامه را متوجه نشدید، نگران نباشید. در ادامه با تمام این موارد آشنا خواهید شد.