-6
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] 但错误仍然存​​在

4

2 回答 2

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])

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

于 2012-08-28T07:58:17.523 回答
1

你用过吗

sys.argv[0]

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

于 2012-11-27T23:50:36.447 回答