Python阶乘数算法无法正常工作

时间:2019-01-04 11:51:50

标签: python algorithm

试图编写一种算法来产生输入的阶乘值,但它无法正常工作。

app/Policies

2 个答案:

答案 0 :(得分:3)

您太早停止了循环1迭代。 您应该使用<=而不是<

print("This code will produce a factorial for any number you input")

value = int(input("Enter the number: "))
total = 1
counter = 1

while counter <= value:
    total *= counter
    counter += 1
    print(total)

print("The factorial value for %s is %s" % (value, total))

请注意,在给定的代码中,我是如何将counter = counter + 1替换为counter += 1的-在Python中也是一样。同样,total = total * valuetotal *= value相同。

注意:在这里,您还可以像这样使用for .. in range(..)循环而不是while循环:

value = int(input("Enter the number: "))
total = 1

for counter in range(1,value+1):
    total *= counter

for counter in range(1,value+1)意味着变量counter1value+1递增1,并且在每次迭代中,循环内的代码({{1} })将运行。

有关更多信息和替代实现,请参见此:Function for Factorial in Python


编辑:正如@Endyd的注释所指出的那样,值得指出的是,您可以捕获验证错误,从而使用total *= counter块来处理无效输入,如下所示:

try/except

在上面的代码中,将运行print("This code will produce a factorial for any number you input") try: value = int(input("Enter the number: ")) total = 1 for counter in range(1,value+1): total*=counter print("The factorial value for %s is %s" % (value, total)) except ValueError: print("Invalid input!") 块中的代码,但是如果运行代码会导致try(当输入不是整数时得到的错误),则ValueError块中的代码将运行,因此您会收到该错误消息。

答案 1 :(得分:0)

将循环条件从except更改为counter < value

counter <= value