我试图从一个输入中获取两个变量,如下所示:
x, y = input().split()
print(x, y)
但是我想让y
变量可选,所以如果用户只输入x
,它只会打印该值。如果只插入了x参数,我得到ValueError
。
任何人都知道如何做到这一点?
答案 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)