2015-03-08 28 views
1

我是python的新手,并将参数放入变量中。我试图只允许三个变量作为参数,并将它们作为字符串放入abc变量的Python参数

#!/usr/bin/python 

import sys 

x = sys.argv[1:] 
x = ' '.join(x) 
if len(x) > 3: 
     print "Only three arguments" 
else: 
     print "Too many arguments" 
a,b,c=[[y] for y in x.split()] 
print a 
print b 
print c 
+0

为什么这是打印“的参数太多”,如果有少3 ??? – Texom512 2015-03-08 17:54:44

+0

您是否期望*完全* 3个参数,或*最多* 3? – 2015-03-08 18:07:09

回答

1

既然你想要的参数为标量,你不需要[]周围y

a,b,c = [y for y in x.split()] 

但坦率地说,你甚至不需要去通过加入一个分割 - 您可以将数组分配给一系列以逗号分隔的标量:

a,b,c = sys.argv[1:] 

同样,你不应该在连接的字符串上检查len,而是在数组上。一个完整的例子:

#!/usr/bin/python 

import sys 

x = sys.argv[1:] # no joining! 
if len(x) == 3: 
    print "Only three arguments" 
    a,b,c = x 
    print a 
    print b 
    print c 
else: 
    print "Too many arguments" 
+0

哦,对,谢谢!我如何测试一下,如果检查它只有三个参数,而不是更少的矿石。 – 2015-03-08 17:49:46

+0

您可以检查'len(sys.argv)'。 – jolvi 2015-03-08 17:52:25

+0

@Iknowpython你可以使用'=='运算符。看到我编辑的帖子。 – Mureinik 2015-03-08 17:52:33

0
#!/usr/bin/python 

import sys 

if len(sys.argv)!=4: 
    print "Need to get 3 arguments" 
    sys.exit() 

a=str(sys.argv[1]) 
b=str(sys.argv[2]) 
c=str(sys.argv[3]) 
print a 
print b 
print c 
+0

如果我输入四个参数,我会得到“只有三个参数”,这是错误的。 – 2015-03-08 17:45:45

0

这里的工作代码:

import sys 

args = sys.argv[1:] 
if len(args) > 3: 
     print "Too many arguments" 

for arg in args: 
    print(arg)