使用Python进行阶乘计算

zphenhs4  于 2023-02-07  发布在  Python
关注(0)|答案(6)|浏览(165)

我是Python新手,目前正在阅读 Python 3 for absolute beginner,并面临以下问题。
我想用程序计算阶乘。
1.请求用户输入非负数n
1.然后使用for循环计算阶乘
代码是这样的

N = input("Please input factorial you would like to calculate: ")
ans = 1
for i in range(1,N+1,1):
    ans = ans*i
print(ans)

而我想增加一个功能来检查输入的数字N是否是非负数。

if N != int(N) and N < 0:

我希望用户再次输入N,如果它不是非负数。
谢谢你的帮助。

5f0d552i

5f0d552i1#

该构造可能如下所示:

while True:
    N = input("Please input factorial you would like to calculate: ")
    try: # try to ...
        N = int(N) # convert it to an integer.
    except ValueError: # If that didn't succeed...
        print("Invalid input: not an integer.")
        continue # retry by restarting the while loop.
    if N > 0: # valid input
        break # then leave the while loop.
    # If we are here, we are about to re-enter the while loop.
    print("Invalid input: not positive.")

在Python 3中,input()返回一个字符串,在任何情况下都必须将它转换成一个数字,因此N != int(N)没有意义,因为你不能将一个字符串与一个int进行比较。
相反,* 尝试 * 将其直接转换为整型,如果不起作用,让用户再次输入,这将拒绝浮点数以及其他任何作为整型无效的值。

lo8azlld

lo8azlld2#

在Python的数学库中,有一个阶乘函数,你可以这样使用它:

import math
...
ans = math.factorial(N)

但是,既然您希望使用循环进行计算,您是否考虑过以下问题?

ans = -1
while ans < 0:
    N = input("Please enter a positive integer: ")
    if N.isdigit() == True:
        n = int(N)
        if n >= 0:
            ans = n
            for x in range (n-1, 1, -1):
                ans *= x
            print (ans)

注意,第二个解不适用于N = 0,其中根据阶乘的定义,ans = 1是正确的。

yb3bgrhw

yb3bgrhw3#

Number = int(input("Enter the number to calculate the factorial: "))
factorial = 1
for i in range(1,Number+1):
    factorial = i*factorial

print("Factorial of ",Number," is : ", factorial)
fzsnzjdm

fzsnzjdm4#

def factorial(a):
    if a == 1:
        return 1
    else:
        return a * factorial(a - 1)

    print('factorial of number', factorial(5))
pgky5nke

pgky5nke5#

开始声明整数n,i,n!显示“输入一个非负整数”。输入n表示i=1到n-1步骤1,显示“n!=i*n”结束表示停止

ybzsozfc

ybzsozfc6#

你可以检查python的数学模块。

# math.factorial(x)
Return x factorial. 
Raises ValueError if x is not integral or is negative.

相关问题