Computer >> Máy Tính >  >> Lập trình >> Python

giai thừa () trong Python

Tìm giai thừa của một số là một yêu cầu thường xuyên trong phân tích dữ liệu và phân tích toán học khác liên quan đến python. Giai thừa luôn được tìm thấy cho một số nguyên dương bằng cách nhân tất cả các số nguyên bắt đầu từ 1 cho đến một số đã cho. Có thể có ba cách tiếp cận để tìm ra điều này như được hiển thị bên dưới.

Sử dụng vòng lặp For

Chúng ta có thể sử dụng vòng lặp for để lặp qua số 1 cho đến số được chỉ định và tiếp tục nhân ở mỗi bước. Trong chương trình dưới đây, chúng tôi yêu cầu người dùng nhập số và chuyển đầu vào thành số nguyên trước khi sử dụng nó trong vòng lặp. Bằng cách này, chúng tôi đảm bảo rằng chúng tôi nhận được số nguyên dương trong phép tính.

Ví dụ

n = input("Enter a number: ")
factorial = 1
if int(n) >= 1:
for i in range (1,int(n)+1):
   factorial = factorial * i
print("Factorail of ",n , " is : ",factorial)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Enter a number: 5
Factorail of 5 is : 120

Sử dụng Đệ quy

Ví dụ

num = input("Enter a number: ")
def recur_factorial(n):
if n == 1:
   return n
elif n < 1:
   return ("NA")
else:
   return n*recur_factorial(n-1)
print (recur_factorial(int(num)))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

#Run1:
Enter a number: 5
120
#Run2:
Enter a number: -2
NA

Sử dụng math.factorial ()

Trong trường hợp này, chúng ta có thể sử dụng trực tiếp hàm giai thừa có sẵn trong mô-đun toán học. Chúng ta không cần viết mã cho chức năng giai thừa thay vì sử dụng trực tiếp math.factorial (). Điều đó cũng quan tâm đến kịch bản số âm và số phân số.

Ví dụ

import math
num = input("Enter a number: ")
print("The factorial of ", num, " is : ")
print(math.factorial(int(num)))

Kết quả đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

#Run1:
Enter a number: 5
The factorial of 5 is :
120
#Run 2:
Enter a number: 3.6
Traceback (most recent call last):
The factorial of 3.6 is :
File "C:/Users....py", line 5, in
print(math.factorial(int(num)))
ValueError: invalid literal for int() with base 10: '3.6'