python的sys运行错误问题

img

请问为什么只要有sys的我就运行不了,我要怎么解决这个问题。

第一个是:


import sys
def gcd(p,q):
    if q==0:return p
    return gcd(q,p%q)
p=int(float(sys.argv[1]))
q=int(float(sys.argv[2]))
print(gcd[p,q])

第二个代码是:

import sys
import turtle
def koch(t,order,size):
        if order==0:
            t.forward(size)
        else:
            koch(t,order-1,size/3)
            t.left(60.0)
            koch(t,order-1,size/3)
            t.left(120.0)
            koch(t,order-1,size/3)
            t.left(60.0)
            koch(t,order-1,size/3)
def main():
    n=int(sys.argv[1])
    step=300
    p=turtle.Turtle()
    koch(p,n,step)
if __name__=='__main__':main()


(base) PS F:\python\python_test> python.exe test1.py
Traceback [1;36m(most recent call last)[0m:
  File [0;32mF:\python\python_test\test1.py:21[0m in [0;35m<module>[0m
    main()
[1;36m  File [1;32mF:\python\python_test\test1.py:15[1;36m in [1;35mmain[1;36m[0m
[1;33m    n=int(sys.argv[1])[0m
[1;31mIndexError[0m[1;31m:[0m list index out of range

(base) PS F:\python\python_test> python.exe test1.py 10

sys.argv 是从控制台取参数;如果直接运行的话,类似 python.exe test1.py 的效果,sys.argv 只有一个文件名test1.py作为输入,没有第二个参数,所以 n=int(sys.argv[1]) 会报错;按照python.exe test1.py 10,添加了额外的参数 10,就跑起来了。