ValueError: too many values to unpack.
例如,这一行显然会导致发生此错误,但据我所知,它可能在Python 3中进行双重赋值。
first,second = input('two space-separated numbers:')
关于导致错误的原因,我没有最模糊的线索。
答案 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
。