در دنیای برنامه نویسی، نوشتن یک برنامه برای حل مسائل ریاضی یکی از دلچسبترین کارهای ممکن است. با نوشتن چند خط کد، میتوانیم مسائلی که برای حل شدن به صورت دستی، به زمان قابل توجه ای نیاز دارند را در مدت زمانی کوتاه حل کنیم. پایتون، از آن دسته زبانهای برنامه نویسی است که در علوم مختلف به ویژه ریاضیات کاربرد فراوانی دارد. در مقاله فاکتوریل در پایتون ، برنامه ای برای به دست آوردن فاکتوریل یک عدد مینویسیم. در ادامه با ما همراه باشید.
فاکتوریل چیست؟
در ریاضیات، فاکتوریل یک عدد، از حاصل ضرب تمام اعداد صحیح از یک تا خود آن عدد، به دست میآید. به عنوان مثال فاکتوریل 5 برابر است با:
1*2*3*4*5 = 120
فاکتوریل فقط شامل اعداد صحیح مثبت است و برای اعداد منفی تعریف نشده است. ضمن آن که فاکتوریل عدد صفر همیشه یک است.
برنامه ی محاسبه ی فاکتوریل در زبان پایتون
در زبان برنامه نویسی پایتون، از چندین روش میتوان برنامه ای نوشت که فاکتوریل یک عدد را محاسبه کند. در این مقاله روشهای مختلف را بررسی میکنیم.
الگوریتم برنامه ی فاکتوریل به صورت زیر است:
یک عدد صحیح بگیر و در n قرار بده.
عدد 1 را در factorial قرار بده.
یک شمارنده به نام i انتخاب کن و 1 را در آن قرار بده.
factorial را در i ضرب کن و در factorial قرار بده.
اگر i از n کوچکتر است، به گام 4 برگرد.
مقدار factorial را چاپ کن.
به اجرای کد خاتمه بده.
همان گونه که ملاحظه میکنید محاسبه فاکتوریل یک عدد، به صورت الگوریتم کار راحتی است. در ادامه این الگوریتم را با زبان پایتون به یک برنامه تبدیل خواهیم کرد که رایانه آن را محاسبه کند.
روش اول: محاسبه فاکتوریل با حلقه for پایتون
در این روش، با استفاده از الگوریتمی که نوشتیم، ابتدا یک عدد صحیح از کاربر گرفته و در ادامه متغیری با نام factorial تعریف میکنیم و مقدار 1 را به آن اختصاص میدهیم:
number = int(input("please Enter integer number: "))
factorial = 1
کار بعدی ما، نوشتن یک حلقه ی تکرار for است که از 1 تا number پیمایش کند و در آن تمام اعداد کوچکتر مساوی number از یک تا خودش در هم ضرب شده و حاصل در متغیر factorial قرار گیرد. به این صورت:
...
for i in range(1, number+1):
factorial = factorial * i
تنها کاری که باید در ادامه انجام دهیم، چاپ کردن مقدار factorial به عنوان فاکتوریل عدد number است:
…
print("The factorial of {} is: {}".format(number, factorial))
کد کامل گرفتن فاکتوریل با حلقه for پایتون را میتوانید در ادامه مشاهده کنید:
number = int(input("please Enter integer number: "))
factorial = 1
for i in range(1, number+1):
factorial = factorial * i
print("The factorial of {} is: {}".format(number, factorial))
:خروجی کد برای عدد 12 به صورت زیر است
please Enter integer number: 12 The factorial of 12 is: 479001600
روش دوم: استفاده از توابع بازگشتی
در توابع بازگشتی، ابتدا یک حالت پایه در تابع طراحی شده و سپس همان تابع در خودش فراخوانی میشود. با این روش، تابع میتواند با کوچک کردن مسئله به حالت پایه رسیده و در ادامه با بازگشت به عقب و جایگزینی مرحله به مرحله ی جوابهای به دست آمده در رابطه، به جواب اصلی مسئله برسد.
در این روش ابتدا باید تابعی تعریف کنیم. ما در اینجا آن تابع را factorial مینامیم. سپس با استفاده از دستور شرطی if بررسی میکنیم اگر عدد داده شده، 0 باشد عدد 1 را خروجی دهد. به این صورت:
def factorial(n):
if n == 0:
return 1
در غیر این صورت با دستور else حاصل ضرب n در (factorial(n – 1 را خروجی میدهیم:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
نکته: هر عددی که به این تابع داده شود با فراخوانی تابع داخلی به صورت برگشتی به عقب برگشته تا به عدد 1 رسیده و سپس با جایگزینی هر جواب در تابع قبلی خود به جواب اصلی خواهد رسید.
اکنون کافی است یک عدد از کاربر گرفته و در تابع قرار داده و خروجی را چاپ نماییم. به این شکل:
...
number = int(input("please Enter integer number: "))
result = factorial(number)
print("The factorial of {} is: {}".format(number, result))
برنامه کامل شده ی ما با روش تابع بازگشتی به صورت زیر خواهد بود:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
number = int(input("please Enter integer number: "))
result = factorial(number)
print("The factorial of {} is: {}".format(number, result))
:مثال: خروجی برای عدد 8 به صورت زیر است
please Enter integer number: 8 The factorial of 8 is: 40320
روش سوم: استفاده از تابع factorial کتابخانه ی math
با استفاده از کتابخانه ی غنی math میتوانیم به سادگی، فاکتوریل یک عدد را به دست آوریم. برای این کار، ابتدا باید کتابخانه math را در برنامه وارد (import) کرده و سپس از تابع ()factorial برای رسیدن به جواب استفاده کنیم. به این صورت:
import math
number = int(input("please Enter integer number: "))
result = math.factorial(number)
print("The factorial of {} is: {}".format(number, result))
:مثال: خروجی برای عدد 6 به صورت زیر است
please Enter integer number: 6 The factorial of 6 is: 720
مدیریت خطاها
در کدهای نوشته شده، ممکن است کاربری عدد منفی در ورودی وارد کند که در این صورت ممکن است با خطایی مشابه خطای زیر مواجه شوند:
please Enter integer number: -13 Traceback (most recent call last): File "c:/Users/Reza/Desktop/molhem/factorial.py", line 21, in <module> result = math.factorial(number) ValueError: factorial() not defined for negative values
برای جلوگیری از این خطا و خطاهای احتمالی، بهتر است قبل از هر چیز با دستورات شرطی بررسی کنیم که عدد ورودی کاربر، از نوع صحیح مثبت است و منفی نباشد. در ادامه میتوانید سه کد بهبود یافته ی کدهای نوشته شده را مشاهده کنید. در این کدها در صورت ورود عدد منفی پیغامی برای کاربر نمایش میدهیم. به این صورت:
کد بهبود یافته - فاکتوریل با حلقه for پایتون
number = int(input("please Enter integer number: "))
if number < 0:
print("Sorry, factorial does not exist for negative numbers")
else:
factorial = 1
for i in range(1, number+1):
factorial = factorial * i
print("The factorial of {} is: {}".format(number, factorial))
کد بهبود یافته - فاکتوریل با توابع بازگشتی
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
number = int(input("please Enter integer number: "))
if number < 0:
print("Sorry, factorial does not exist for negative numbers")
else:
result = factorial(number)
print("The factorial of {} is: {}".format(number, result))
کد بهبود یافته - فاکتوریل با کتابخانه math
import math
number = int(input("please Enter integer number: "))
if number < 0:
print("Sorry, factorial does not exist for negative numbers")
else:
result = math.factorial(number)
print("The factorial of {} is: {}".format(number, result))
خروجی هر سه کد بهبود یافته:
please Enter integer number: -13 Sorry, factorial does not exist for negative numbers
جمع بندی
توانایی حل مسئله در برنامه نویسی از اهمیت بالایی برخوردار است. یک برنامه نویس باید برای حل مسائل پیش روی خود، آنها را به مسئلههای کوچکتر تقسیم کرده و به مرور به آنها شاخ و برگ دهد. راههای بی شماری برای نوشتن برنامهها وجود دارد که هر شخص با توجه به دانش و استعداد خود یکی از آنها را انتخاب میکند، اما یک برنامه نویس حرفه ای باید بهترین راه را برگزیند. همانند موضوع همین مقاله که با سه روش، یک برنامه برای محاسبه فاکتوریل در پایتون نوشتیم که هر سه برنامه به یک جواب رسید. امیدواریم مطالب ذکر شده برای شما مفید باشد.
روش شما برای محاسبه فاکتوریل در پایتون چیست؟ خوشحال میشویم نظرات خود را با ما به اشتراک بگذارید.
اگر به یادگیری بیشتر در زمینه ی برنامه نویسی پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دوره ی متخصص آموزش پایتون توسعه وب در آینده میتونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزه ی هوش مصنوعی هم شوی.
سلام وقتتون به خیر باشه متشکرم از مطالب کامل و مفید تون
یه سوال داشتم خدمت تون
من وقتی که کد رو مینویسم میخوام خروجی بگیرم مینویسه please inter integr number:
نازنین کریمی مقدم۲۹ مهر ۱۴۰۲، ۰۷:۵۰
درود
شما باید عدد خودتون رو در کنسول یا ترمینال بنویسید و کلید اینتر رو بزنید تا کد اجرا شه.
ناصری فرد۲۴ آبان ۱۴۰۰، ۰۵:۱۵
خیلی کامل و جامع...
Nazanin KarimiMoghaddam۲۴ آبان ۱۴۰۰، ۰۵:۲۱
ممنون که با ما همراه هستید.
شروع رایگان یادگیری برنامه نویسی
کلیک کنید 👇
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: