程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

变量从不超过列表大小时出现棘手的“列表索引超出范围”错误?

发布于2022-08-09 03:21     阅读(576)     评论(0)     点赞(29)     收藏(3)


在下面用于 manim 的 Python 代码中,我在使用相同长度的不同列表进行索引时循环遍历列表。我已经检查了当 i 超出列表的大小(即 n)时是否引发异常,并且不会发生此异常。但是,如果循环确实运行,则会引发“索引超出范围”异常。编译器说它是在我展示的最后一行代码中抛出的。

此外,我已经通过在最后一行更改vertices[i]为来修复错误。vertices[i%n]但是,这似乎是一个不应该起作用的修复程序,我不知道为什么会这样。如果i从来没有超过n-1,那么如何改变ii%n解决问题?编译器是否期望我可能超过允许的索引,即使我没有?

该错误仅在 gammas 未初始化为 None 时发生。否则,它工作顺利。

def curved_polygon(vertices,
                   gammas=None,
                   **kwargs):
    n = len(vertices)
    if gammas is None:
        gammas = [None for i in range(n)]
    #replace none gammas with straight lines
    for i, g in enumerate(gammas):
        if g is not None: 
            pass
        else:
            print("here i is " + str(i) + " but n is " + str(n))
            if(i>=n):
                raise Exception("i is bigger than it should be")
            gammas[i] = lambda t : vertices[i]*(1-t)+vertices[(i+1)%n]*t ##straight line from start to end

解决方案


暂无回答



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1652069/f2f25c73e92d86af9782/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)