✍️ int متن یک عدد صحیح را میخواند، اما متن اعشاری یا کلمه را خودکار به عدد صحیح دلخواه تبدیل نمیکند. اگر متن نامعتبر باشد ValueError رخ میدهد. میتوانیم همین خطای مشخص را بگیریم و تصمیم قراردادی، مثل رد کردن ردیف، را اجرا کنیم؛ لازم نیست کل برنامه گزارشگیری متوقف شود.
برای نمونه، int(' 7 ') عدد هفت میدهد، اما int('هفت') تبدیل موفقی ندارد. حالا خروجی این کد را ردگیری کن:
values = ['3', '2.5', '0']
result = []
for text in values:
try:
result.append(int(text))
except ValueError:
result.append(None)
print(result)
کد هنوز شرط مثبت بودن تعداد را اجرا نمیکند؛ فقط تبدیل نوع را میسنجد. بنابراین صفر از نظر این قطعه قابل تبدیل است و باقی میماند. اعتبار دامنه مرحله بعدی است. خطای رایج، یکی دانستن «قابل تبدیل به int» و «تعداد معتبر برای فروش» است.
گزینهای را انتخاب کن که هم عددهای درست را حفظ کرده و هم فقط تبدیل خراب را به None تبدیل کرده باشد. None یک مقدار ویژه پایتون است، نه رشته 'None' و نه عدد صفر؛ در JSON معادل null خواهد داشت.
فعالیت شما
خروجی result را برای ['3','2.5','0'] انتخاب کن؛ فقط تبدیل int انجام شده و دامنه مثبت بودن هنوز بررسی نشده است.