索引器错误:在python中列出索引超出范围,知道其含义,但不明白为什么会发生这种情况

2024-09-28 19:00:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写程序并调用以下代码:

python new.py -s 13 -p 5

但是,在第63行,我得到了以下错误。我知道这是什么意思,但我不明白为什么。在

^{pr2}$

这就是密码。我要做的是把0平均地分布在1中,第一个输入是0和1的字符串长度,第二个输入是1的numper,谢谢!在

import argparse


p = argparse.ArgumentParser()
p.add_argument("-pulses", help = "number of pulses", type = int)
p.add_argument("-slots", help = "length of the rythm", type = int)
args = p.parse_args()
slots = args.slots
pulses = args.pulses


pauses = slots - pulses

mod = pauses % pulses

rythm = []


if mod == 0:
    x = slots/pauses
    l = 0
    while l<slots:

        if l%x == 0:
            rythm.append(1)
        else:
            rythm.append(0)

        l = l + 1

    print (rythm)

if mod != 0:
    i = 0
    j = 0

    while i < pulses:
        rythm.append([1])
        i = i + 1

    while j < pauses:
        rythm.append([0])
        j = j + 1

    last = len(rythm)
    last = last - 1
    last_len = len(rythm[last])
    x = slots%pauses
    y = pauses - x

    flag = True

    while flag == True:
        flag = False

        if (last_len != 1) or (rythm[last] != 0):

            flag = True
            i = 0

            while i < x:
                rythm[i].append(rythm[last])
                rythm.remove(rythm[last])

                i = i + 1

            y = y - x
            x = x%y
            last = len(rythm)
            last = last - 1
            last_len = len(rythm[last])

    print (rythm)

Tags: addmodtruelenifargparseargsflag
2条回答

如果支票在这里:

if (last_len != 1) or (rythm[last] != 0):

比利时:

^{pr2}$

添加一些调试语句或简单的print语句。当您尝试以下操作时:

rythm[i].append(rythm[last])

rythm[last]绝对没有什么,因为你做了

rythm.remove(rythm[last])

在最后一次迭代中。在

IndexError: list index out of range-表示您正在按位置访问一个不存在的值。在

例如:

a = range(10) #length of a is 9, list indices start at 0
print(a[10])  #accessing value by a index that doesn't exist, raises a IndexError exception

相关问题 更多 >