我对该程序进行了编码以查找数字的阶乘。当我尝试使用数字0时,它将打印两次,但是当我使用其他任何数字时,它都可以正常工作。
def factorial_num(factorial):
num = int(input("Write a number to figure out his factorial"))
if num == 0:
print ("The factorial of 0 is 1")
elif num < 0:
print ("Negative numbers don't have a factorial")
else:
for i in range (1, num + 1):
factorial = factorial*i
print ("The factorial of", num, "is", factorial)
factorial_num(1)
为什么会这样?
答案 0 :(得分:1)
所以基本上,这里的问题与缩进有关。
如果您查看 if 块,则有3个选项。对于任何给定的数字,仅执行以下其中之一:if,elif,else,则代码将在if块之后继续运行。
输入0时,代码将执行
如果num == 0:
打印(“阶乘0为1”)
块(因此将结果打印一次),然后继续。
在if块之后,有另一个总是总是执行的打印(因此第二个打印)
该如何解决:
缩进最后一个打印,使其在或块的 else 部分中完全删除,并修改块,以便在 else 部分。