繁体   English   中英

Python中的命令行输入问题

[英]Command line input issues in Python

我在python中使用此Tarjan算法在有向图中找到电路。 我已经尝试了所有类型的输入,但是没有用。

这是完整的代码,而以下是接受输入的代码。

if len(sys.argv) != 2:
    print "usage: echo \"v1 v2\nv1 v3\n...\" | %s num_vertices"%(sys.argv[0])

A = [[] for a in range(int(sys.argv[1]))]

for edge in sys.stdin.readlines():
    v1,v2 = edge.split(' ', 1)
    A[int(v1)].append(int(v2));

我提供了以下输入:

$ echo "3" "0 1 0 2 1 0 2 0 2 1" | python cycles.py
$ echo "3 0 1 0 2 1 0 2 0 2 1" | python cycles.py
$ echo "0 1\n0 2\n1 0\n1 3\n2 0\n3 0\n3 1\n3 2" | python cycles.py //as instructed.

但他们都不在工作。 有人可以帮忙弄清楚输入格式吗,或者程序中有错误吗?

sys.argv的长度

sys.argv的长度始终包含脚本本身的名称。 因此,对于您的脚本:

>> print len(sys.argv)
3
>> print sys.argv
['cycles.py', '3', '0 1 0 2 1 0 2 0 2 1']

脚本错误

您检查sys.argv长度不得超过2。当您传入2个参数时,sys.argv的长度将为3。

if len(sys.argv) != 2:
    print "usage: echo \"v1 v2\nv1 v3\n...\" | %s num_vertices"%(sys.argv[0])

应该

if len(sys.argv) != 3:
    print "usage: echo \"v1 v2\nv1 v3\n...\" | %s num_vertices"%(sys.argv[0])

使用参数调用python脚本

调用脚本的一种更具可读性的方法是使用以下语法:

python -i cycles.py "3" "0 1 0 2 1 0 2 0 2 1"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM