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

把for循环换成while之后是哪里出错了呢

 while L.pop(1)==True:

        sum+=L[1]*L[1]

        L.pop(1)


正在回答

1 回答

最好能把上下文全都贴出来,光这行代码看不出要干什么。

while里的判断条件是「把列表的第2个元素pop出来看等不等于True」。

如果这个判断的目的是看迭代中列表还有没有第2个元素的话,那显然是错误的,你看下面的例子:

L = [1, 2, 3]
L.pop(1)
# 2
L
# [1, 3]
L.pop(1)
# 3
L
# [1]
L.pop(1)
# IndexError: pop index out of range

看到了吗?最后的输出是「超出范围」,是个索引错误,而不是True/False(有还没有)。

如果你一定要用L.pop(1)==True做判断的话,除非你的目的是「只要列表的第2个元素不为0就能迭代下去」,但这有什么意义呢?

L  = [1, 2, 3, 0, 5, 6]
# 你不停的pop出来第2个元素,直到L=[1, 0, 5, 6]
L.pop(1)
# 返回值为0,需要说明的是python里True和1等价,False和0等价,所以此时0!=True,迭代结束

现在L里还有1,5,6那么些数呢,打算怎么办?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

把for循环换成while之后是哪里出错了呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信