Python最少字符函数

我必须编写一个函数,该函数接受一个参数文本,该文本包含一个字符串形式的文本块,并返回一个按字母顺序排序的单词列表,该列表具有最低的元音比例。元音比例定义为单词中字母为元音的比例(例如,"life"的元音比例为2=0.5)。

# 回答1


总的来说,你是在正确的轨道上,但我认为你的算法有一些问题。您想要的是创建一个以频率为键、以单词为值的词典。首先,我将创建一个函数来返回一个单词中的元音数量。您的字典值应该是列表,这样您的结果将包括具有相同元音比例的单词。
迪克特
方法setDefault是这方面的理想方法。返回的值
DICT[分钟(DICT)]
因为这就是你要找的答案。
类似于:

选择 | 换行 | 行号
  1. ...snip...
  2.     words = sentence.lower().split()
  3.     least_characters = {}
  4.     for word in words:
  5.         least_characters.setdefault(vowel_count(word)/float(len(word)), []).append(word)
  6.     return least_characters[min(least_characters)]

我更改了一些标识符名,这样会更直观。
元音计数
是返回单词中的元音数量的函数。这可以归结为一行清单的理解--可能是:

选择 | 换行 | 行号
  1. len([letter for letter in word if letter in ['a', 'e', 'i', 'o', 'u']])
# 回答2


您的Punc_char替换是向后的,因为"&"不在您的列表中,所以它将被包括在内。添加到bvdet的帖子中,这对我的口味来说有点太嵌套了,所以应该包括一个(S)函数,也许可以单独处理每个单词,以减少嵌套并提高可读性。

选择 | 换行 | 行号
  1.     vowel = ['a','e','i','o','u']
  2.     words = sentence.lower().split()
  3.     least_characters = {}
  4.     for word in words:
  5.         for ltr in word:
  6.             if "a" <= ltr <= "z":  # omits everything else
  7.                 if ltr in vowel: 

标签: python

添加新评论