如何修复阶乘打印程序中的错误?

问题描述

我试图制作一个简单的程序来查找输入数字的阶乘。 但是我无法弄清楚某个地方有一个错误: 当我使用foreach (var item in _lstErrorSheets) { var newlist = (from s in _lstLines where s.Contains(item) select s).ToList(); foreach (var error in newlist) { rtbdisplay.AppendText(lineNum +". "+error + " \r\n"); lineNum++; } } 函数时,它显示'none'输出,如果我使用aria-expanded函数名,则显示错误。帮我找到错误

<span
    data-toggle="collapse"
    data-target="#collapseExample"
    aria-expanded="false"
    aria-controls="collapseExample"
>
    <small @click="fetch(id)">Open/Close</small>
</span>

使用raw_input()函数

时出现错误
input()

解决方法

您的代码不起作用

您首先输入的

8string,所以它将经过以下条件:

elif not isinstance(n,int):
     while not isinstance(n,int):
          print "Factorial is defined only for Positive integers"
          try:
              n=int(raw_input())
          except ValueError as ve:
              pass

之后,当您输入新的8并将其转换为int时,它将中断while循环并退出fact()函数,而无需进行阶乘计算。其他情况如下所示。

else:
     step1=fact(n-1)
     step2=n*step1
     return step2

修复此问题,建议您将输入验证的一部分从def fact()中移出。

代码:

program_active=True
while program_active:
    def fact(n):
        if n==1:
            return n
        elif n==0:
            return 1
        else:
            step1=fact(n-1)
            step2=n*step1
            return step2
    while True:
      print"input a number to check its factorial"
      try:
        n=int(raw_input())
      except:
        print("Factorial is defined only for integer")
        continue
      if n < 1:
        print 'Factorial is defined only for Positive integer'
        continue 

      x = fact(n)
      print x

输出:

> input a number to check its factorial 
> 8  
> 40320

此代码应该有效。