试图编写一种算法来产生输入的阶乘值,但它无法正常工作。
app/Policies
答案 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 * value
与total *= 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)
意味着变量counter
从1
到value+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