در دنیای برنامهنویسی، نوشتن یک برنامه برای حل مسائل ریاضی یکی از دلچسبترین کارهای ممکن است. با نوشتن چند خط کد، میتوانیم مسائلی که برای حل شدن به صورت دستی، به زمان قابل توجهای نیاز دارند را در مدت زمانی کوتاه حل کنیم. پایتون، از آن دسته زبانهای برنامهنویسی است که در علوم مختلف به ویژه ریاضیات کاربرد فراوانی دارد. در مقاله فاکتوریل در پایتون ، برنامهای برای به دست آوردن فاکتوریل یک عدد مینویسیم. در ادامه با ما همراه باشید.
فاکتوریل چیست؟
در ریاضیات، فاکتوریل یک عدد، از حاصل ضرب تمام اعداد صحیح از یک تا خود آن عدد، بهدست میآید. به عنوان مثال فاکتوریل 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۲۴ آبان ۱۴۰۰، ۰۵:۲۱
ممنون که با ما همراه هستید.
شروع رایگان یادگیری برنامه نویسی
کلیک کنید 👇
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: