Python 为什么返回两个以上的值? ValueError回溯(最近一次调用) 在() 5其他: 6通 ---->7种动物饼干(“平头骆驼”) 动物饼干(文本) 1 def动物饼干(文本): ---->text.split()中的[word1,word2]为2: 3如果word1[0]==word2[0]: 4返回真值 5其他: ValueError:要解压缩的值太多(应为2个)
Python 为什么返回两个以上的值? ValueError回溯(最近一次调用) 在() 5其他: 6通 ---->7种动物饼干(“平头骆驼”) 动物饼干(文本) 1 def动物饼干(文本): ---->text.split()中的[word1,word2]为2: 3如果word1[0]==word2[0]: 4返回真值 5其他: ValueError:要解压缩的值太多(应为2个),python,function,Python,Function,split返回字符串列表,如果字符串不包含用作分隔符的字符串,则边缘大小写是包含单个字符串的列表 通过在text.split()中对[word1,word2]说,您基本上希望它返回一个列表列表,如下例所示: ValueError Traceback (most recent call last) <ipython-input-21-bfc977603445> in <module>() 5
split
返回字符串列表,如果字符串不包含用作分隔符的字符串,则边缘大小写是包含单个字符串的列表
通过在text.split()中对[word1,word2]说,您基本上希望它返回一个列表列表,如下例所示:
ValueError Traceback (most recent call last)
<ipython-input-21-bfc977603445> in <module>()
5 else:
6 pass
----> 7 animal_crackers('Levelheaded Llama')
<ipython-input-21-bfc977603445> in animal_crackers(text)
1 def animal_crackers(text):
----> 2 for [word1, word2] in text.split():
3 if word1[0]==word2[0]:
4 return true
5 else:
ValueError: too many values to unpack (expected 2)
将输出
for [word1, word2] in [['a', 'b'], ['c', 'd']]:
print(word1, word2)
您有两个选择:
- 分别抓取每个元素:
a b
c d
- 使用解包(仅当您确信
文本总是有一个空格,或者如果您希望得到一个错误,则使用解包):
split
返回字符串列表,如果字符串不包含用作分隔符的字符串,则边缘大小写是包含单个字符串的列表
通过在text.split()中对[word1,word2]说,您基本上希望它返回一个列表列表,如下例所示:
ValueError Traceback (most recent call last)
<ipython-input-21-bfc977603445> in <module>()
5 else:
6 pass
----> 7 animal_crackers('Levelheaded Llama')
<ipython-input-21-bfc977603445> in animal_crackers(text)
1 def animal_crackers(text):
----> 2 for [word1, word2] in text.split():
3 if word1[0]==word2[0]:
4 return true
5 else:
ValueError: too many values to unpack (expected 2)
将输出
for [word1, word2] in [['a', 'b'], ['c', 'd']]:
print(word1, word2)
您有两个选择:
- 分别抓取每个元素:
a b
c d
- 使用解包(仅当您确信
文本总是有一个空格,或者如果您希望得到一个错误,则使用解包):
代码中的问题是,您尝试将一个值分配给两个变量,这里的text.split()
是['Levelheaded','Llama']
,因此您将迭代的元素的第一个元素将是'Levelheaded'
,您尝试分配给两个变量word1
和word2
相反,您可以不迭代地分配它们,也可以将true
更改为true
word1, word2 = text.split()
代码中的问题是,您试图将一个值分配给两个变量,这里的text.split()
是['Levelheaded',Llama']
,因此您要迭代的元素的第一个元素将是'Levelheaded'
,您尝试分配给两个变量word1
和word2
相反,您可以不迭代地分配它们,也可以将true
更改为true
word1, word2 = text.split()
text.split()
def animal_crackers(text):
word1, word2 = text.split()
if word1[0] == word2[0]:
return True
print(animal_crackers('Levelheaded Llama')) # -> True
既然我们知道在两个元素的列表上有一个循环,我们可以像这样展开循环:
for [word1, word2] in ['Levelheaded', 'Llama']:
if word1[0]==word2[0]:
return true
else:
pass
现在类似于[word1,word2]='Levelheaded'
的东西会将字符串视为一个字符列表,但是由于单词包含两个以上的字符,因此会出现错误
因为您实际上不想在任何东西上循环,所以应该去掉for循环,只需编写:
# First iteration
[word1, word2] = 'Levelheaded'
if word1[0]==word2[0]:
return true
else:
pass
# Second iteration
[word1, word2] = 'Llama'
if word1[0]==word2[0]:
return true
else:
pass
text.split()
def animal_crackers(text):
word1, word2 = text.split()
if word1[0] == word2[0]:
return True
print(animal_crackers('Levelheaded Llama')) # -> True
既然我们知道在两个元素的列表上有一个循环,我们可以像这样展开循环:
for [word1, word2] in ['Levelheaded', 'Llama']:
if word1[0]==word2[0]:
return true
else:
pass
现在类似于[word1,word2]='Levelheaded'
的东西会将字符串视为一个字符列表,但是由于单词包含两个以上的字符,因此会出现错误
因为您实际上不想在任何东西上循环,所以应该去掉for循环,只需编写:
# First iteration
[word1, word2] = 'Levelheaded'
if word1[0]==word2[0]:
return true
else:
pass
# Second iteration
[word1, word2] = 'Llama'
if word1[0]==word2[0]:
return true
else:
pass
在['a','b',['c','d'].
中的[word1,word2]应该是,您缺少了一个右括号。@logicalkoan fixedIt应该是在['a','b',['c','d'].
中的[word1,word2]缺少右括号。@logicalkoan fixedIt应该注意,[word1,word2]=text.split()
如果文本
包含多个空格,则会导致完全相同的错误;如果文本中不包含空格,则会导致相反的错误all@DeepSpace当然,但如果是那样的话,那是意料之中的,不是吗?在我阅读时,OP对这个错误感到困惑,因为text.split()
应该为给定的输入返回两个元素。我不认为OP期望代码能够为多于或少于一个空格的输入工作。换句话说:使用[word1,word2]=text.split()
代码执行OP期望原始代码执行的操作:比较字符串中两个单词的首字母,或者如果少于或多于两个单词,则导致错误。这就是我对问题的解释。@sepp2k完全正确,代码只用于两个字符串,因此只需要一个空格。需要注意的是,[word1,word2]=text.split()
如果text
包含多个空格,将导致完全相同的错误,相反的错误,如果它在all@DeepSpace当然,但如果是那样的话,那是意料之中的,不是吗?在我阅读时,OP对这个错误感到困惑,因为text.split()
应该为给定的输入返回两个元素。我不认为OP期望代码能够为多于或少于一个空格的输入工作。换句话说:使用[word1,word2]=text.split()
代码执行OP期望原始代码执行的操作:比较字符串中两个单词的首字母,或者如果少于或多于两个单词,则导致错误。这就是我对这个问题的解释。@sepp2k完全正确,代码只用于两个字符串,因此只需要一个空格。