簡體   English   中英

關於我返回最長單詞的代碼的問題

[英]Question about my code for returning longest word

編寫一個名為longest 的python 函數,它接受兩個參數(您可以安全地假設所有參數始終是字符串)。 當這個函數被調用時,它應該確定哪個字符串更長,並返回那個字符串。

我的代碼:

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

當這個函數被調用時,它應該確定哪個字符串更長,並返回那個字符串。

<運算符不比較字符串的長度,而是比較它們按字母順序排序的順序。 而是嘗試len(word1) < len(word2)

為了使用<進行字符串長度的長度比較,您需要創建自己的類,該類應該是內置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)來得到len(word)的長度,然后用它來找到最長的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM