2015-03-08 74 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)