为了账号安全,请及时绑定邮箱和手机立即绑定

except StopIteration as e: 这句代码为什么老显示出错

except StopIteration as e: 这句代码为什么老显示出错

xiaoxiaomengmeng 2016-09-13 10:12:26
def fib(max):    n,a,b=0,0,1    while(n<max):        print(b)        a,b=b,a+b        n=n+1    return'done'g=fib(6)while true:    try:        x=next(g)        print('g:',x)     except StopIteration as e:        print('Generator return value:',e.value)        break错误原因: except StopIteration as e:                             ^IndentationError: unindent does not match any outer indentation level
查看完整描述

1 回答

已采纳
?
Nelson_Zhao

TA贡献21条经验 获得超4个赞

明显的编译语法错误,空格多打了。

except前面多打了一个空格。我复制到IDE里面果然是多可一个空格。看下图

//img1.sycdn.imooc.com//57d7852a00015baa07300190.jpg

删掉空格,发现还有一个错误。Python里面True和False都是要首字母大写的。需要把

while true:

改为

while True:


查看完整回答
2 反对 回复 2016-09-13
  • xiaoxiaomengmeng
    xiaoxiaomengmeng
    你说的很对,我改了之后就没有呢个错误了,但是又有一个新的错误 x=next(g) TypeError: 'str' object is not an iterator 求解答,谢谢
  • Nelson_Zhao
    Nelson_Zhao
    g = fib(6), fib函数返回的是字符串"done",g得到的结果是"done",当然不能用next方法,只有迭代器可以用next。
  • 1 回答
  • 0 关注
  • 4205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信