关于用python写一个函数,基础题

请大家帮我看看这道题要求函数least_vowel_words(text)可以找出一段text中,哪个单词的元音占的比例最小例如:“take”就是2/4=0.5>>>le... 请大家帮我看看这道题

要求函数least_vowel_words(text)
可以找出一段text中,哪个单词的元音占的比例最小
例如:
“take”就是 2/4=0.5

>>>least_vowel_words("i do go to school.")
["do", "go"]

谢谢各位!
展开
 我来答
野人拆
2013-04-17 · TA获得超过1069个赞
知道小有建树答主
回答量:815
采纳率:57%
帮助的人:565万
展开全部

不应该是school么? 比例是0.333333333

def least_vowel_words(text):
line=text.strip('.').split()
wdict=dict()
vowel='aeiouAEIOU'
for word in line:
num = 0.0
for chr in word:
if chr in vowel:
num+=1
r=str(float(num/len(word)))
if r in wdict:
wdict[r]=wdict[r]+[word]
else:
wdict[r]=[word]
print wdict[min(wdict.keys())]
更多追问追答
追问
谢谢,但是有一个问题,
如果text = ‘this morning is nice. how do you think?'

你的code没办法去掉这个text里面的句号和问号呀。
追答
用正则就好了.
import re
def least_vowel_words(text):
line=re.findall(r'\w+', text)
wdict=dict()
vowel='aeiouAEIOU'
for word in line:
num = 0.0
for chr in word:
if chr in vowel:
num+=1
r=str(float(num/len(word)))
if r in wdict:
wdict[r]=wdict[r]+[word]
else:
wdict[r]=[word]
print wdict[min(wdict.keys())]
百度网友f0f9883
2013-04-18 · TA获得超过317个赞
知道小有建树答主
回答量:258
采纳率:100%
帮助的人:158万
展开全部


def isVowel(a):
if a in "aeiouAEIOU":
return True
else:
return False
def Calculate(a):
i = 0
for s in a:
if isVowel(s):
i+=1
return i/len(a)
def least_vowel_words(text):
dicte = dict()
list = text.strip('.').split()
for a in range(0,len(list)):
dicte[list[a]]= str(Calculate(list[a]))
i=min(dicte.values())
for k in dicte:
if dicte[k]==i:
print (str(i)+":"+str(k))

追问
谢谢,但是有一个问题,如果text = ‘this morning is nice. how do you think?'

你的code没办法去掉这个text里面的句号和问号呀。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式