使用matplotlib的IndexError

时间:2017-03-02 19:20:56

标签: python recursion matplotlib index-error

我一直在尝试使用这段代码来绘制C曲线(https://en.wikipedia.org/wiki/Lévy_C_curve),但不知怎的,它不断给我这个错误:

IndexError: list index out of range

但是列表的长度似乎对我很好,因为它设置为n-1,那么为什么这个错误会一直显示出来?

前一段时间我尝试了类似的东西(Sierprinski三角形)时,我遇到了同样的问题,所以我真的很感激一些帮助。

import matplotlib.pyplot as plt
from math import *

def DrawC(direction, length, n):
    """Drawing the curve."""

    if n > 0:
        direction = direction + (pi / 4.0)
        DrawC(direction, length / sqrt(2.0), n-1)
        direction = direction - (pi / 2.0)
        DrawC(direction, length / sqrt(2.0), n-1)
    else:
        x = x_lst[-1] + length * cos(direction)
        y = y_lst[-1] + length * sin(direction)
        x_lst.append(x)
        y_lst.append(y)

n = int(raw_input('Generation of the curve: '))

x_lst = []
y_lst = [-150]


direction = pi / 2
length = 300
DrawC(direction, length, n)

plt.plot(x_lst, y_lst)
plt.title("C-curve")
plt.axis([-350, 350, -350, 350])
plt.show()

raw_input('Push the ENTER key: ')

1 个答案:

答案 0 :(得分:0)

列表x_lst不应该为空。

无论您的代码采用何种路径,当x = x_lst[-1] + length * cos(direction)列表不能为空时。这在构建点列表时很有意义,例如,[0]x_lst开始。无论如何,这给了我很好的照片: - )