有关我的返回最长单词的代码的问题

时间:2018-12-28 00:10:39

标签: python

编写一个名为longest的python函数,该函数带有两个参数(您可以放心地假设所有参数始终是字符串)。 调用此函数时,应确定哪个字符串更长,然后返回该字符串。

我的代码:

def longest(word1, word2):
    if word1 < word2:
        return word2
    else:
        return word1

调用此函数时,应确定哪个字符串更长,然后返回该字符串。

2 个答案:

答案 0 :(得分:1)

<运算符不比较字符串的长度,而是比较它们按字母顺序排序的顺序。而是尝试len(word1) < len(word2)

答案 1 :(得分:0)

为了使用<进行字符串长度的长度比较,您需要创建自己的类,该类应该是内置str的子类。让该子类与str相同的名称。

<运算符是使用称为__lt__()的方法实现的,在您的子类中,您需要实现此方法。您也可以为__le__()运算符实现<=。您可能需要根据需要覆盖其他运算符。

因此您的子类定义将如下所示:

class str(str):
    def __lt__(self, other):
        return len(self) < len(other)

    def __le__(self, other):
        return len(self) <= len(other)

现在,您可以使用方法来获取最长的单词,如下所示:

def longest(word1, word2):
    if str(word1) < str(word2):
        return word2
    else:
        return word1

str(word1)在这里很重要,因为默认情况下,字符串创建将使用内置str类,但是您应该使用子类str类。这种方法相当复杂,因此您可以使用len(word)来获取单词的长度,然后使用它来找到最长的字符串。