[英]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.