✍️ تعداد فروش باید هم قابل تبدیل به عدد صحیح باشد و هم از صفر بزرگتر باشد. این دو شرط جدا هستند. متن صفر یک عدد صحیح معتبر میسازد، اما در قرارداد این گزارش، فروش صفرعددی ثبت نمیکنیم. تعداد منفی هم قرار نیست به شکل برگشت کالا تعبیر شود؛ چنین رفتاری باید در قرارداد دیگری تعریف شود.
مثلاً ' 4 ' بعد از تبدیل چهار میشود و پذیرفته است، ولی '-2' و '1.5' هر دو رد میشوند؛ اولی به علت دامنه و دومی به علت نوع عدد. لازم نیست اعشار را گرد کنی یا با float بخوانی و بعد قسمت صحیحش را برداری؛ آن کار داده نامعتبر را بیصدا عوض میکند.
تابع ناقص تبدیل را با مدیریت ValueError دارد. شرط مثبت بودن را اضافه کن تا خروجی یا عدد معتبر باشد یا None. رشته خالی و فقطفاصله هم قابل تبدیل نیستند. خطای رایج، استفاده از شرط >= 0 یا برگرداندن صفر هنگام خطا است؛ در هر دو حالت مرز تعداد معتبر مبهم میشود. این تابع فقط رشته میگیرد؛ لازم نیست برای فهرست، بولی یا شیء دلخواه رفتار تازهای اختراع کنی.
فعالیت شما
تابع parse_quantity(text) یک رشته میگیرد؛ اگر int(text) موفق است و حاصل >0 است همان عدد صحیح را بده، وگرنه None. قواعد متن صحیح همان int پایتون است؛ فاصله دو سر مجاز، اعشار/خالی/کلمه نامعتبر، صفر و منفی نامعتبر. parse_quantity(' 4 ')=4 و parse_quantity('0')=None. ورودی غیررشته در قرارداد نیست.