"len() function出现错误,当我尝试使用i时"

2024-09-30 01:18:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个codewars挑战,你必须在字符串上找到最小的wird,我决定使用len()函数,但每当运行代码时,它都会给我以下错误:

Traceback (most recent call last):
  File "main.py", line 4, in <module>
    test.assert_equals(find_short("bitcoin take over the world maybe who knows perhaps"), 3)
  File "/home/codewarrior/solution.py", line 5, in find_short
    if word.len() < l:
AttributeError: 'str' object has no attribute 'len'

这是有缺陷的代码,我真的找不出有什么问题:

def find_short(s):
    foo = s.split()
    l = 100
    for word in foo:
        if word.len() < l:
            l = word.len()
        else:
            continue

    return l # l: shortest word length

Tags: 函数字符串代码inpyleniffoo
3条回答

字符串没有len属性,可以使用字符串作为参数调用len()函数。你知道吗

def find_short(s):
    foo = s.split()
    l = 100
    for word in foo:
        if len(word) < l:
            l = len(word)
        else:
            continue

    return l # l: shortest word length

为了完整起见,len确实有一个method counterpart

word.__len__()

这就是len独立函数在内部调用的内容。如果实现一个对象并希望它与len一起工作,那么就为它实现__len__方法。你知道吗

除非你有充分的理由,否则不应该直接使用它。len__len__返回的数据进行一些检查以确保正确性:

class L:
    def __len__(self):
        return -4

print(len(L()))

ValueError: __len__() should return >= 0

如果您直接使用“dunder方法”,您将绕过这些检查。你知道吗

len是一个函数,而不是一个方法。你知道吗

if len(word) < l:
    l = len(word)

相关问题 更多 >

    热门问题