问题描述
我试图制作一个简单的程序来查找输入数字的阶乘。
但是我无法弄清楚某个地方有一个错误:
当我使用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>
时出现错误
input()
解决方法
您的代码不起作用。
您首先输入的 8
是string
,所以它将经过以下条件:
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
此代码应该有效。