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]