Python 获取用户输入并将其保存为最多三个变量
我对以下代码有问题:Python 获取用户输入并将其保存为最多三个变量,python,python-3.x,Python,Python 3.x,我对以下代码有问题: cmd, arg, arg1 = input("> ").split(" ") 我想输入这三个变量。 但是如果我将arg和arg1留空,Python会抱怨: 没有足够的值来解包(预期为3,得到1) 我怎样才能避免这种情况 我想将arg和arg1设置为可选。如果大小不同,则无法将其解压缩为变量。嗯,不是这样的 您可以使用(也称为星型解包)(仅限Python 3): 现在,如果您只输入一个命令,args为空,否则它会将您输入的参数解压到一个列表中 if not args
cmd, arg, arg1 = input("> ").split(" ")
我想输入这三个变量。
但是如果我将arg
和arg1
留空,Python会抱怨:
没有足够的值来解包(预期为3,得到1)
我怎样才能避免这种情况
我想将
arg
和arg1
设置为可选。如果大小不同,则无法将其解压缩为变量。嗯,不是这样的
您可以使用(也称为星型解包)(仅限Python 3):
现在,如果您只输入一个命令,args
为空,否则它会将您输入的参数解压到一个列表中
if not args:
# there are no arguments
pass
elif len(args)>2:
print("too many args")
else:
print("args",args)
请注意,您会发现split(“”)
limited。我会使用split()
(无参数:将空格分组以避免空参数),或者使用shlex.split(输入(“>”)处理引号
注意:使用Python2,您必须拆分并测试长度。不太优雅,但可以工作。获取输入字符串后,可以单独设置变量:
inp=input("> ").split(" ")
l = len(inp)
if l >= 1:
cmd = inp[0]
if l >= 2:
arg1 = inp[1]
if l >= 3:
arg2 = inp[2]
如果你刚开始,这可能会让人困惑,但这是一个非常好的答案。谢谢。因为OP知道如何打开包装,所以这只是前进了一步:)对于备忘录,上面的答案是参考。。在我看来这很酷@克丽丝,我不认为这让人困惑。这是我开始学习Python(2.7)时尝试的第一件事之一,因为“很明显”这样的东西会起作用,但它没有起作用。
inp=input("> ").split(" ")
l = len(inp)
if l >= 1:
cmd = inp[0]
if l >= 2:
arg1 = inp[1]
if l >= 3:
arg2 = inp[2]