我得到了一个IndexError:列表索引超出范围在sys.argv中[1]
问题描述:
我想绘制这个代码,但它进入我得到了一个IndexError:列表索引超出范围在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])
`
所以你shuld可能的东西推出像
python main.py 100 200
走多到细节,你的代码读取command line arguments,它的期望那里是他们的2 ,也可以解析为浮点值。 通常,第一个命令行参数是脚本文件本身,所以sys.argv
总是至少有一个元素长。
这就是说,你可以按照上面的建议做,并且在启动脚本时传递2个浮点数,或者编辑脚本和硬编码2值而不是从命令行读取的值,如
k1 = 100
k2 = 200
+0
非常感谢!这真的很有帮助。然后,我每次想运行代码时都按了F5。现在我知道如何使用sys,argv。 –
您是如何启动该计划的? –
你是否用至少两个命令行参数运行脚本?例如'python3 script.py arg1 arg2' –
如果你用'python filename.py'启动它,你会得到这个错误。例如,如果您使用'python filename.py 1 2'启动它,则不会出现错误。我希望这是明确的原因。 – Michael