以下python代码中的错误是什么

时间:2012-08-28 07:52:41

标签: python-2.7

import sys

def Hello(name):
   name = name + '!!!'
   print 'Hello' ,  name


def main():
    Hello(sys.argv[1])


if __name__ == '__main__':
       main()

这是错误

Traceback (most recent call last):
  File "D:\pythonPractice\firstPython.py", line 13, in <module>
    main()
  File "D:\pythonPractice\firstPython.py", line 9, in main
    Hello(sys.argv[1])
IndexError: list index out of range

我也尝试了sys.argv [2],但错误仍然是

2 个答案:

答案 0 :(得分:3)

首先,我认为您最初发布的代码(使用Hello(sys.argv[0]))并不是您实际拥有的代码。它与错误无关,状态为sys.argv[1],因此可能的错误是:

def main():
    Hello(sys.argv[1])

关于错误,那是因为你在运行时没有提供参数。您需要这样做,以便sys.argv[1]存在:

python helloprog Pax

你会发现一个更强大的main

def main():
    if len(sys.argv) < 2:
        Hello("whoever you are")
    else:
        Hello(sys.argv[1])

将检测您何时未提供参数,并使用合适的默认值而不是引发异常。

答案 1 :(得分:1)

你使用过

吗?
sys.argv[0]

由于这会返回一个列表,因此您可能没有元素&gt; 1