首页 > 解决方案 > 错误显示太多要解压的值,但只有两个参数

问题描述

Q) 编写一个函数,接收一个包含两个单词的字符串,如果两个单词都以相同的字母开头,则返回 True。

这是我尝试过的-

def animal_crackers(text):
    for x,y in text.split():
        if x[0].lower() == y[0].lower():
            return True
        else:
            return False

这里显示了错误-

太多值无法解包(预期 2)

对于第 2 行 -for x,y in text.split():

我不明白为什么会出现这个错误,因为它只有两个词可以解压。

标签: python

解决方案


for x, y in意味着你要循环多对。如果你只有一对,你想要x, y =

def animal_crackers(text):
    x, y = text.split()
    return x[0].lower() == y[0].lower()
>>> animal_crackers('foo bar')
False
>>> animal_crackers('bar baz')
True

顺便说一句,我简化了另一部分。


解释

您收到该错误的原因是您提供的第一个单词有两个以上的字母。例如:

def f(text):
    for x, y in text.split():
        return x[0].lower() == y[0].lower()
>>> f('hh')
True
>>> f('hb')
False
>>> f('i')
  ...
ValueError: not enough values to unpack (expected 2, got 1)
>>> f('iii')
  ...
ValueError: too many values to unpack (expected 2)

推荐阅读