繁体   English   中英

两次打印0

[英]Printing 0 twice

我对该程序进行了编码以查找数字的阶乘。 当我尝试使用数字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)

为什么会这样呢?

因此,基本上,这里的问题与缩进有关。

如果您查看if块,则有3个选项。 对于任何给定的数字,仅执行以下其中之一:if,elif,else,则代码将在if块之后继续运行。

输入0时,代码将执行

如果num == 0:

打印(“ 0的阶乘为1”)

块(因此将结果打印一次),然后再继续。

在if块之后,还有另一个总是执行的打印(因此,第二个打印)

您可以采取哪些措施解决此问题:

缩进最后一个打印件,使其在块的else部分中; 完全删除第一个if部分,然后修改块,以便将0包括在else部分中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM