0

晚上,

我是 python 学生的介绍,遇到了一些麻烦。我正在尝试制作一个 python 阶乘程序。它应该提示用户输入 n,然后计算 n 的阶乘,除非用户输入 -1。我被困住了,教授建议我们使用 while 循环。我知道我什至还没有遇到“if -1”的情况。不知道如何让 python 计算阶乘,而无需公然使用 math.factorial 函数。

import math

num = 1
n = int(input("Enter n: "))

while n >= 1:
     num *= n

print(num)
4

5 回答 5

4

学校中的“经典”阶乘函数是一个递归定义:

def fact(n):
    rtr=1 if n<=1 else n*fact(n-1)
    return rtr

n = int(input("Enter n: "))
print fact(n)

如果您只是想要一种方法来解决您的问题:

num = 1
n = int(input("Enter n: "))

while n > 1:
    num *= n
    n-=1        # need to reduce the value of 'n' or the loop will not exit

print num

如果您想测试小于 1 的数字:

num = 1
n = int(input("Enter n: "))

n=1 if n<1 else n    # n will be 1 or more...
while n >= 1:
    num *= n
    n-=1        # need to reduce the value of 'n' or the loop will not exit

print num

或者,在输入后测试 n:

num = 1
while True:
    n = int(input("Enter n: "))
    if n>0: break

while n >= 1:
    num *= n
    n-=1        # need to reduce the value of 'n' or the loop will not exit

print num

这是使用reduce的一种功能方式:

>>> n=10
>>> reduce(lambda x,y: x*y, range(1,n+1))
3628800
于 2013-10-01T04:05:02.920 回答
1

你实际上非常接近。只需更新n每次迭代的值:

num = 1
n = int(input("Enter n: "))

while n >= 1:
    num *= n
    # Update n
    n -= 1
print(num)
于 2013-10-01T04:07:41.863 回答
0
#Factorial using list
fact=list()
fact1=input("Enter Factorial Number:")
for i in range(1,int(fact1)+1):
    fact.append(i)
 print(fact)
 sum=fact[0]
 for j in range(0,len(fact)):
        sum*=fact[j]
        print(sum)
于 2020-11-22T07:13:36.207 回答
0

你可以做这样的事情。

    def Factorial(y):
        x = len(y)
        number = 1
        for i in range(x):
            number = number * (i + 1)
            print(number)
于 2019-06-07T01:08:08.453 回答
0

我是 python 新手,这是我的阶乘程序。

默认阶乘(n):

x = []
for i in range(n):
    x.append(n)
    n = n-1
print(x)
y = len(x)

j = 0
m = 1
while j != y:
    m = m *(x[j])
    j = j+1
print(m)

阶乘(5)

于 2018-05-16T19:14:21.967 回答