Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当索引小于字符串中的最大索引时,“IndexError:字符串索引超出范围”。python_Python - Fatal编程技术网

当索引小于字符串中的最大索引时,“IndexError:字符串索引超出范围”。python

当索引小于字符串中的最大索引时,“IndexError:字符串索引超出范围”。python,python,Python,所以,首先是一些背景。作为一个有趣的小项目,我正在开发一个小型编译器,它可以读取文本文件,有点像一种伪编程语言。无论如何,同样的错误已经出现了两次。一次是我的“if”语句,一次是我的“math”语句,语言是python3。错误是indexer错误:字符串索引超出范围,即使索引小于lenstring-1。下面是我的if语句代码: elif (code[0] + code[1]) == 'if': # sta is the index sta = 7

所以,首先是一些背景。作为一个有趣的小项目,我正在开发一个小型编译器,它可以读取文本文件,有点像一种伪编程语言。无论如何,同样的错误已经出现了两次。一次是我的“if”语句,一次是我的“math”语句,语言是python3。错误是indexer错误:字符串索引超出范围,即使索引小于lenstring-1。下面是我的if语句代码:

    elif (code[0] + code[1]) == 'if':
        # sta is the index
        sta = 7
        i = 0
        varname = ''
        while i == 0:
            if code[sta] == '=':
                i = 0
            else:
                varname = varname + code[sta]
                sta += 1
        sign = code[sta]
        sta += 2
        i = 0
        condition = ''
        while i == 0:
            if code[sta] == ':':
                i = 0
            else:
                condition = condition + code[sta]
                sta += 1
        sta += 2
        if ints[varname] == int(condition):
            codeif = code[sta:(len(code) - 1)]
            readCode(codeif)
导致错误的行是:

if code[sta] == '=':
我要传递的代码正好有15个索引长 无论如何,我需要一些帮助。提前谢谢你

问题在于,假设您的输入为:

      012345678901234567890
code="if x= 9: chr *Hello!;"
但是如果sta从7开始,并且只递增,它将永远找不到=。最终sta达到21,即>最大指数20。因此,您的声明是,即使索引小于lenstring-1。似乎不在这里

正如其他评论者指出的那样,似乎没有退出该循环的方法,因为我从0开始,除了再次设置为0之外,不会被修改,并且循环仅在i!=0只要稍微调整一下逻辑,你就应该关机并重新运行了


快乐编码

当抛出异常时,是什么使您相信sta小于14?您是否尝试过在调试中单步执行函数?您可以在问题行之前打印sta的值,以查看它的值。我已在调试中反复执行代码。如果我没有,我为什么要发布这个?因为我似乎已经发布了。它只是在增加。也许找不到“=”?谢谢你,山姆!你让我高兴极了!也祝你快乐!