在Python中使输入可选

时间:2017-04-04 13:03:28

标签: python python-3.x

我试图从一个输入中获取两个变量,如下所示:

x, y = input().split()
print(x, y)

但是我想让y变量可选,所以如果用户只输入x,它只会打印该值。如果只插入了x参数,我得到ValueError

任何人都知道如何做到这一点?

6 个答案:

答案 0 :(得分:4)

您可以使用与split不同的内容来“伪造”可选输入。使用str.partition,你可以捕获结果元组的第一个和最后一个元素:

x, _, y = input().partition(' ')

然后print相应地:

print(x, y if y else '')

x包含输入字符串的第一个值(在' '上拆分后,y包含其余值。

答案 1 :(得分:2)

由于这是Python 3,这里有两行使用扩展的可迭代解包。

x, *y = input().split()
y = y[0] if y else ''

答案 2 :(得分:1)

您无法一次解压缩变量,您必须先检查返回的list对象的大小。如果size不是2,则只需填写默认值,否则按照您的方式进行解包。

toks = input().split()
if len(toks)==2:
    x,y = toks
else:
    x = toks[0]
    y = "default"

print(x,y)

答案 3 :(得分:0)

y     = None
x     = input()

if ' ' in x:
    x, y = x.split()

print(x, y)

答案 4 :(得分:0)

你可以去:

x, y = (list(input().split()) + [None]*2)[:2]
print(x, y if y else '')

答案 5 :(得分:0)

这样做的一种方式:

x, y, *z = input().split() + ['']
print(x, y)