محاسبه فاکتوریل در پایتون
فاکتوریل عدد n حاصلضرب همهٔ عددهای ۱ تا n است؛ مثلاً فاکتوریل ۵ برابر ۱۲۰ است. در پایتون سادهترین راه، یک حلقهٔ for است که از ۱ تا n جلو میرود و حاصل را در یک متغیر ضرب میکند.
صورت سؤال
برنامهای بنویسید که یک عدد صحیح نامنفی n را از ورودی بخواند و فاکتوریل آن را چاپ کند.
فاکتوریل صفر طبق تعریف ۱ است. ورودی همیشه عددی صحیح بین ۰ و ۲۰ است.
ورودی نمونه
5
خروجی نمونه
120
خودتان امتحان کنید
کد را در ویرایشگر زیر کامل کنید و اجرا کنید. ورودی نمونه در کادر ورودی آماده است و بعد از هر اجرا، خروجی شما با خروجی نمونه مقایسه میشود.
کد را اجرا کنید تا خروجی آن اینجا نمایش داده شود.
راهنمایی
متغیری با مقدار اولیهٔ ۱ بسازید و در یک حلقه آن را در عددهای ۱ تا n ضرب کنید. یادتان باشد که برای رسیدن به خود n باید range(1, n + 1) بنویسید.
جواب و توضیح
بهتر است جواب را بعد از امتحان کردن راه خودتان باز کنید.
نمایش جواب
n = int(input())
result = 1
for i in range(1, n + 1):
result *= i
print(result)این جواب چطور کار میکند؟
مقدار اولیهٔ result باید ۱ باشد، نه صفر، چون هر عددی ضرب در صفر صفر میشود. همین مقدار اولیه جواب ورودی صفر را هم درست میدهد: وقتی n صفر است، range(1, 1) خالی است، حلقه یک بار هم اجرا نمیشود و ۱ چاپ میشود.
range(1, n + 1) عددهای ۱ تا n را تولید میکند. انتهای بازه در range جزو بازه نیست؛ به همین دلیل n + 1 نوشته شده است.
عبارت result *= i شکل کوتاه result = result * i است. بعد از آخرین دور حلقه، result حاصلضرب همهٔ عددهای ۱ تا n را نگه میدارد.
راه دوم: تابع بازگشتی
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
n = int(input())
print(factorial(n))نسخهٔ بازگشتی به تعریف ریاضی نزدیکتر است، اما برای عددهای خیلی بزرگ به سقف عمق بازگشت پایتون میرسد. در برنامهٔ واقعی، math.factorial از کتابخانهٔ استاندارد سریعترین و مطمئنترین راه است.
اشتباههای رایج
- مقدار اولیهٔ result را صفر میگذارند و جواب همیشه صفر میشود.
- range(1, n) مینویسند و آخرین ضرب، یعنی خود n، جا میماند.
- فراموش میکنند خروجی input() رشته است و آن را با int() به عدد تبدیل نمیکنند.
تمرین بعدی
پایتون را قدمبهقدم یاد بگیرید
این تمرین یکی از تمرینهای پایتون با جواب دینا کد است. در دورهٔ پایتون از صفر هر مفهوم یک درس کوتاه دارد و تمرین هر درس با چند آزمون پنهان نمره میگیرد؛ درسهای اول رایگان است. برای امتحان کد آزاد هم اجرای آنلاین پایتون در دسترس است.