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

Python 2.7 以下python代码中的错误是什么,python-2.7,Python 2.7,这里是错误 import sys def Hello(name): name = name + '!!!' print 'Hello' , name def main(): Hello(sys.argv[1]) if __name__ == '__main__': main() 回溯(最近一次呼叫最后一次): 文件“D:\pythonpracce\firstPython.py”,第13行,在 main() 文件“D:\pythonpracce\fi

这里是错误

import sys

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


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


if __name__ == '__main__':
       main()
回溯(最近一次呼叫最后一次):
文件“D:\pythonpracce\firstPython.py”,第13行,在
main()
文件“D:\pythonpracce\firstPython.py”,主目录第9行
您好(sys.argv[1])
索引器:列表索引超出范围

我也尝试过sys.argv[2],但错误仍然存在。首先,我认为您最初发布的代码(带有
Hello(sys.argv[0])
)不是您实际拥有的代码。它与错误不匹配,错误状态为
sys.argv[1]
,因此您可能有:

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

def main():
    Hello(sys.argv[1])
您会发现一个更健壮的
main
,如下所示:

python helloprog Pax
def main():
如果len(系统argv)<2:
你好(“无论你是谁”)
其他:
您好(sys.argv[1])
它将在您没有提供参数时进行检测,并使用合适的默认值,而不是引发异常。

是否使用了

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

由于这将返回一个列表,因此可能没有大于1的元素

您的代码与错误不匹配。没有一行包含
Hello(sys.argv[1])
。我在我的机器上运行了这个脚本(Python 2.7.3),它运行起来没有任何问题。我有点困惑,您的错误消息说sys.argv[1]超出范围,但在代码中您使用的是sys.argv[0]。也许您运行的脚本是错误的?@darpan1118关键是您需要使用
if
else
块,就像paxdiablo的回答一样
sys.argv
是一种python(单击此处可获得一个精彩而简短的教程),如果从命令行中传递“否”,则会出现错误,除非执行上面的
if
-
else
块。如果从IDE而不是命令行或终端运行,则需要找到指定命令行参数(也称为命令行参数)的方法。
def main():
    if len(sys.argv) < 2:
        Hello("whoever you are")
    else:
        Hello(sys.argv[1])
sys.argv[0]