Python 中的命令行输入问题
Command line input issues in Python
我在 python 中使用 Tarjan 算法在有向图中查找电路。我已经尝试了所有类型的输入,但它不起作用。
这是complete code,下面是接受输入的代码。
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.
但其中 none 正在运行。有人可以帮忙弄清楚输入格式还是程序中有错误?
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"
我在 python 中使用 Tarjan 算法在有向图中查找电路。我已经尝试了所有类型的输入,但它不起作用。
这是complete code,下面是接受输入的代码。
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.
但其中 none 正在运行。有人可以帮忙弄清楚输入格式还是程序中有错误?
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"