无法从“输入(...)”调用解压缩;解包的价值太多了

时间:2014-09-27 02:31:59

标签: python python-3.x

ValueError: too many values to unpack.

例如,这一行显然会导致发生此错误,但据我所知,它可能在Python 3中进行双重赋值。

first,second = input('two space-separated numbers:')

关于导致错误的原因,我没有最模糊的线索。

2 个答案:

答案 0 :(得分:3)

input返回一个字符串。仅当字符串包含2个字符时,解包才有效:

>>> first, second = 'ot'
>>> first
'o'
>>> second
't'

否则,它会引发ValueError

>>> first, second = 'asdf'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

但那不是你想要的。使用str.split拆分字符串。按,拆分:

>>> 'hello,world'.split(',')
['hello', 'world']
>>> first, second = 'hello,world'.split(',')  # .split(',', 1)
>>> first
'hello'
>>> second
'world'

按空格拆分:

first, second = input('two space-separated numbers:').split(maxsplit=1)

答案 1 :(得分:2)

在Python 3中,input总是返回一个字符串。尝试将字符串分配给变量列表将导致Python将字符串的每个元素(即字符)与变量匹配,如果变量的数量和字符数不匹配,则为&#39 ;我会得到一个错误,就像你看到的一样。您需要解析input返回的字符串,以便将其转换为两个数字的列表,然后将这些数字分配给first, second