为什么n=0时for语句不报错,n=1或n=2时执行完if语句为什么for语句不继续执行,能不能改成if···elif···else:for这样的形式?
def fib(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
print (fib(10))
python的函数是怎么执行的?
答案:1 悬赏:40
解决时间 2021-02-28 23:08
- 提问者网友:清羽墨安
- 2021-02-28 14:29
最佳答案
- 二级知识专家网友:安稳不如野
- 2021-02-28 15:42
n=0时执行到了for i in range(2,n),这个range是个空列表[],故一次也不会进入for循环执行“ fibs.append(fibs[-1] + fibs[-2])”,,直接返回[1,1],故不报错
n=1返回[1]
n=2返回[1,1]
n=3及以上,进入for循环,fibs每次增加一个元素,其值为倒数第1个和倒数第2个元素之和
改为if ... elif...else可以如下:
def fib(n):
if n<1:
return None
elif n == 1:
return [1]
elif n == 2:
return [1, 1]
else:
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
print (fib(10))
n=1返回[1]
n=2返回[1,1]
n=3及以上,进入for循环,fibs每次增加一个元素,其值为倒数第1个和倒数第2个元素之和
改为if ... elif...else可以如下:
def fib(n):
if n<1:
return None
elif n == 1:
return [1]
elif n == 2:
return [1, 1]
else:
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
print (fib(10))
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯