に保存します。 しかし、私はarg
とarg1
空のままにすると、Pythonは文句:私は次のコードで問題を抱えているユーザー入力を取得し、最大3つの変数
ない私はこれを避けることができますどのように解凍するのに十分な値(、3を期待1を得た)
を?
arg
とarg1
はオプションです。
に保存します。 しかし、私はarg
とarg1
空のままにすると、Pythonは文句:私は次のコードで問題を抱えているユーザー入力を取得し、最大3つの変数
ない私はこれを避けることができますどのように解凍するのに十分な値(、3を期待1を得た)
を?
arg
とarg1
はオプションです。
サイズが異なる場合、変数に展開することはできません。まあ、これは好きではない。 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では、分割して長さをテストする必要があります。あまりエレガントではありませんが、機能します。あなたが入力文字列を取得した後、別途変数を設定することができます
:
inp=input("> ").split(" ")
l = len(inp)
if l >= 1:
cmd = inp[0]
if l >= 2:
arg1 = inp[1]
if l >= 3:
arg2 = inp[2]
をあなたが出始めている場合、これは混乱に見えるかもしれないが、それは非常に良い答えです。ありがとう。 – Chris
ありがとう。 OPはアンパックについて知っているので、これは単なる一歩前です:) –
メモのために、上記の回答は[PEP 3132:Extended Iterable Unpacking](https://www.python.org/dev/peps/pep-3132/)を参照しています。私の意見ではかなりクールです。 @Chris、私はそれが混乱しているとは思わない。 Python(2.7)を学び始めたときに最初に試したことの1つです。なぜなら、このようなことは「明白」だったからですが、そうではありませんでした。 –