Python 有没有一种简单的方法来获取包含某个字母的最长单词?
我试图通过for循环获得包含字母“f”的最大单词,通过我的代码,我试图用if和and语句使其尽可能简单。但是,它不工作,因为它返回的是最大的单词,但不是包含字母f的单词,为什么它不工作Python 有没有一种简单的方法来获取包含某个字母的最长单词?,python,if-statement,Python,If Statement,我试图通过for循环获得包含字母“f”的最大单词,通过我的代码,我试图用if和and语句使其尽可能简单。但是,它不工作,因为它返回的是最大的单词,但不是包含字母f的单词,为什么它不工作 def main(): sentence = "Absence makes the heart grow fonder" letter = "f" longest_word = get_longest_word(sentence, letter) print('"' + longe
def main():
sentence = "Absence makes the heart grow fonder"
letter = "f"
longest_word = get_longest_word(sentence, letter)
print('"' + longest_word + '" is the longest word containing the letter "'
+ letter + '".')
def get_longest_word(sentence, letter):
words_list = sentence.split()
largest = words_list[0]
my_list = []
for word in words_list:
if letter in word and len(word) > len(largest):
largest = word
return largest
main()
使用中的操作符可以更轻松地实现这一点:
for word in word_list:
if 'f' in word:
longest_words.append(word)
longest_word = sorted(longest_words)[0]
原因是您将
最大的
初始化为单词列表[0]
,这是句子中最长的单词“缺席”
因此,即使到达'fonder'
,即使if
的第一部分通过(它包含'f'
),关于长度的第二部分也不会通过
就我个人而言,我会这样做:
from operator import itemgetter
def get_longest_word(sentence, letter):
words_with_letter = ((word, len(word)) for word in sentence.split() if letter in word)
return max(words_with_letter, key=itemgetter(1))[0]
这会将句子转换为元组的iterable,其中第一个元素是单词,第二个元素是单词的长度,并且所有单词都已经包含有问题的字母
然后,我们需要做的就是得到长度最长的单词,即第二个位置的最大值
输出:
"fonder" is the longest word containing the letter "f".
问题是,您在第一个单词的首字母上初始化了
最大的
,即使它没有要查找的字母。将其初始化为”
,然后删除我的列表(您没有使用该列表)