2017-08-16 10 views

答えて

7

サイズが異なる場合、変数に展開することはできません。まあ、これは好きではない。 extended iterable unpackingを使用することができます

は、(Pythonの3のみ)(もスター開梱として知られている):今、あなただけのコマンドを入力した場合

cmd, *args = input("> ").split(" ") 

argsは、それはあなたが入力している引数をアンパックし、それ以外の空でありますリストに入れる

if not args: 
    # there are no arguments 
    pass 
elif len(args)>2: 
    print("too many args") 
else: 
    print("args",args) 

split(" ")が限定されています。私はsplit()(引数無し:空白の引数を避けるために空白をグループに入れます)、または引用符で処理するshlex.split(input("> "))

注:Python 2では、分割して長さをテストする必要があります。あまりエレガントではありませんが、機能します。あなたが入力文字列を取得した後、別途変数を設定することができます

+0

をあなたが出始めている場合、これは混乱に見えるかもしれないが、それは非常に良い答えです。ありがとう。 – Chris

+0

ありがとう。 OPはアンパックについて知っているので、これは単なる一歩前です:) –

+1

メモのために、上記の回答は[PEP 3132:Extended Iterable Unpacking](https://www.python.org/dev/peps/pep-3132/)を参照しています。私の意見ではかなりクールです。 @Chris、私はそれが混乱しているとは思わない。 Python(2.7)を学び始めたときに最初に試したことの1つです。なぜなら、このようなことは「明白」だったからですが、そうではありませんでした。 –

2

inp=input("> ").split(" ") 
l = len(inp) 
if l >= 1: 
    cmd = inp[0] 
if l >= 2: 
    arg1 = inp[1] 
if l >= 3: 
    arg2 = inp[2] 
関連する問題