چگونه داده ها را یررسی کنیم ؟

0

چگونه داده ها را یررسی کنیم ؟ 

اگر ما تابع factoial را با مقدار 5.1 بررسی کنیم، چه اتفاقی میافتد؟

>> factorial (1.5)
RuntimeError: Maximum recursion depth exceeded

این شبیه یک بازگشت بیانتها بهنظر میرسد اما چگونه میتواند چنین باشد؟ یک حالـت مبنـا در وضعیت 0==n وجود دارد. مشکل اینجا است که مقادیر n حالت مبنـا را گـم مـیکننـد. در اولـین فراخوانی بازگشتی مقدار n برابر با 5.0 است. در فراخوانی بعدي مقدار n برابر با 5.0 –است و از ایـن لحظه مقدار کوچک و کوچکتر میشود اما هیچگاه به صفر نمیرسد. ما دو انتخاب داریم؛ میتوانیم تابع factorial را براي کار بـر روي اعـداد اعشـاري تعمـیم دهیم و یا factorial را به گونهاي بسازیم که نوع آرگومانهاي خـود را بررسـی کنـد. اولـین راه را «تابع گاما» مینامند و کمی از بحث این کتاب خارج است. بنابراین راه دوم را در پیش میگیریم. ما میتوانیم از تابع type براي مقایسۀ نوع پارامتر با نوع مقـدار صـحیح مشخصـی  استفاده کنیم. حال که ما بر روي این موضوع کار میکنیم، میتوانیم مثبت بودن پارامتر را هم بررسـی کنیم:

def factorial (n):
if type(n) != type(1):
print “Factorial is only defined for integers.”
return -1
elif n < 0:
print “Factorial is only defined for positive integers.”
return -1
elif n == 0:
return 1
else:
return n * factorial(n-1)

اکنون ما سه حالت مبنا داریم. اولین حالت مبنا اعداد غیرصحیح را جدا مـیکنـد (یـا بـه زبـان عامیانه ”غربال میکند“) و دومی اعداد صحیح منفی را. در هر دو حالت، برنامه پیغـام خطـایی را چـاپ میکند و براي اینکه غلط بودن چیزي را نشان بدهد، مقدار مشخص 1 –را بر میگرداند:

>> factorial (“fred”)
Factorial is only defined for integers.
-1
>>> factorial (-2)
Factorial is only defined for positive integers.
-1

اگر ما هر دو بررسی را انجام دهیم، آنگاه مـیدانـیم کـه n یـک عـدد صـحیح مثبـت اسـت و میتوانیم ثابت کنیم که بازگشت پایان مییابد. این برنامه الگویی را نشان میدهد که گاهی نگهبان نامیده مـیشـود. دو شـرط اول بـهعنـوان نگهبان عمل میکنند و از کد برنامه وقتی که با مقادیر اشکالآفرین کار میکنـد محافظـت مـینماینـد. نگهبانها اثبات درستی کد را ممکن میسازند.

برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید

بستر اموزش های ویدویی 

کیانا ابراهیمی سوال پاسخ داده شده اکتبر 14, 2020
گذاشتن نظر
شما در حال مشاهده 1 از 1 پاسخ هستید ، برای دیدن همه پاسخها اینجا را کلیک کنید .
پاسخ خود را بنویسید .
  • فعال
  • بازدیدها1123 times
  • پاسخ ها1 پاسخ
ورود به متاورس | متاورس ایرانی
ورود به متاورس ایران یا همان متاورس ملی

علامت ذره بین Tutorials سمت راست به رنگ قرمز به شما کمک خواهد کرد .

جدید ترین سوالات پرسیده شده

منقضی شدن سم بتانال 1 پاسخ | 0 آرا
ایا ایدز گزفتم؟ 0 پاسخ ها | 0 آرا
انتخاب ورزش رزمی 0 پاسخ ها | 1 رای
وزارت تعاون کار و رفاه اجتماعی اسناد و املاک کشور مرکز آموزش ویدیویی انجمن پرسش و پاسخ فروشگاه ملی تولید کنندگان مدیریت بر مدیران حم رسانه ملی اخبار متا دانشگاه متاورس استخدام | دانش محور فروشگاه مجازی حم تبلیغات ملی بازار NFT متاورس رنگ نقشه ملی سه بعدی متا تونل زمان متاآرت وبرنگ خانه