6.6.2章 写一个求阶乘的函数 举例疑惑
教材6.6.2章 写一个求阶乘的函数 正整数的阶乘函数,假设n=5,那么要求计算出1*2*3*4*5的结果。我按 课本上的例题,敲了一段代码
def jiecheng(n):
for i in range(1,n):
i *= i+1
return n
n=int (input ('请输入数字:'))
j = jiecheng(n)
print (j)
这段代码计算的数值有误,于是改成
def jiecheng(n):
for i in range(1,n):
n *= i
return n
n=int (input ('请输入数字:'))
j = jiecheng(n)
print (j)
请教老师,这样的两种写法,区别在哪里。第二段代码可以正确计算出数值来。 每一次循环 i 会被重新复制为
range 中的数
造成错误
第一个代码的错在 认为 for 循环不会把之前的 i 值给覆盖,实际上是会的,因为 range 是个产生一个整数类型的容器
而 for i in range 这样的循环就是把 range 这容器里面的值一个个拿出来,重新赋值给 i ,导致每次赋值都会把之前你 i 得到的值所覆盖了
所以最后返回的是 i 的值为(n-1)n
第二个就是正确的写法 ~
第一个 return 的是n 输入什么就会返回什么 for循环中的值算了 但是并没有返回 liuzhengyuan 发表于 2020-6-29 12:00
每一次循环 i 会被重新复制为
range 中的数
造成错误
谢谢老师 Twilight6 发表于 2020-6-29 13:06
第一个代码的错在 认为 for 循环不会把之前的 i 值给覆盖,实际上是会的,因为 range 是个产生一个整 ...
谢谢老师 wufan2140 发表于 2020-6-29 14:06
谢谢老师
{:10_297:}客气了~~
页:
[1]