I got an IndexError: list index out of range in sys.argv[1]

I got an IndexError: list index out of range in sys.argv[1]

我想绘制这段代码,但它输入了

IndexError: list index out of range in the line: k = float(sys.argv[1])

谁能帮我解决这个问题?

canWidth=500
canHeight=500
**strong text**
def setupWindow () :
    global win, canvas
    from tkinter import Tk, Canvas, Frame
    win = Tk()
    canvas = Canvas(win, height=canHeight, width=canWidth)
    f = Frame (win)    
    canvas.pack()
    f.pack()

def startApp () :
    global win, canvas
    import sys
    k1  = float(sys.argv[1])   # starting value of K
    k2  = float(sys.argv[2])   # ending   value of K
    x = .2                     # is somewhat arbitrary
    vrng = range(200)          # We'll do 200 horz steps
    for t in range(canWidth) :
        win.update()
        k = k1 + (k2-k1)*t/canWidth
        print ("K = %.04f" % k)
        for i in vrng :
            p = x*canHeight
            canvas.create_line(t,p,t,p+1)  # just makes a pixel dot
            x = x * (1-x) * k              # next x value
            if x <=0 or x >= 1.0 :
                print ("overflow at k", k)
                return

def main () :
    setupWindow()       # Create Canvas with Frame
    startApp()          # Start up the display  
    win.mainloop()      # Just wait for user to close graph

if __name__ == "__main__" : main()

看起来程序需要 2 个浮点命令行参数。 `

k1  = float(sys.argv[1])   # starting value of K
k2  = float(sys.argv[2])  

`

所以你应该用类似

的东西来启动它
python main.py 100 200

更详细地说,您的代码正在读取 command line arguments 并且期望其中有 2 个,它们也可以解析为浮点值。 通常,第一个命令行参数是脚本文件本身,所以 sys.argv 总是至少有一个元素长。

也就是说,您可以按照上面的建议进行操作,并在启动脚本时将 2 个浮点数作为参数传递,或者只编辑脚本并硬编码 2 个值,而不是从命令行读取的值,就像这样

k1  = 100  
k2  = 200