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

پیش‌بینی تست خط لوله پایتون؛ تبدیل متن، جمع و تخفیف

آزمون چند تابع و اجرای مجموعه تست پایتون · 0٪

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

مثال، متن‌های عددی رو تبدیل و بعد جمع می‌کنه. سؤال اصلی بعد از جمع، تخفیف رو هم اعمال می‌کنه. خطای رایج اعمال درصد به یک عضو یا کم‌کردن خود عدد درصد به‌جای سهمی از جمعه. مسیر داده رو مرحله‌به‌مرحله دنبال کن: ابتدا تبدیل‌ها، بعد جمع و در آخر ضرب در سهم باقی‌مانده. چون عددهای مثال ساده‌اند، انتظار نهایی رو می‌تونی مستقل دستی حساب کنی. اینجا هیچ خطای تبدیل یا ورودی خارج بازه نداریم؛ هدف فقط درک ترتیب همکاری تابع‌هاست. نتیجه عددی می‌تونه به شکل float نمایش داده بشه و همچنان با انتظار عددی برابر باشه.

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

def parse_numbers(texts):
    return [int(text) for text in texts]

def text_total(texts):
    return sum(parse_numbers(texts))

assert text_total(["4", "6"]) == 10

حالا نوبت توئه: pipeline ابتدا متن‌های ["40","60"] را به عدد تبدیل می‌کند، جمع می‌زند و با تخفیف ۲۰ درصد، total*(1-percent/100) برمی‌گرداند. خروجی نهایی چیست؟ ورودی‌ها معتبرند و تخفیف روی کل جمع اعمال می‌شود؛ درصد را با مبلغ ثابت اشتباه نگیر.

فعالیت شما

pipeline ابتدا متن‌های ["40","60"] را به عدد تبدیل می‌کند، جمع می‌زند و با تخفیف ۲۰ درصد، total*(1-percent/100) برمی‌گرداند. خروجی نهایی چیست؟ ورودی‌ها معتبرند و تخفیف روی کل جمع اعمال می‌شود؛ درصد را با مبلغ ثابت اشتباه نگیر.

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

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

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

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

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

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

def parse_numbers(texts):
    return [int(text) for text in texts]

def pipeline(texts, percent):
    total = sum(parse_numbers(texts))
    return total * (1 - percent / 100)

pipeline(["40", "60"], 20)

گزینه‌های پیش‌بینی خروجی

  1. 80؛ بیست درصد از جمع صد کم می‌شود.
  2. 20؛ فقط مقدار تخفیف برگردانده می‌شود.
  3. 100؛ تبدیل متن باعث نادیده‌گرفتن تخفیف می‌شود.