Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取用户输入并将其保存为最多三个变量_Python_Python 3.x - Fatal编程技术网

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]