简单的计数器所以我编写返回的信件比一个超级简单的计数器:创建的字母
def hasnoe(word):
count = 0
for letter in word:
if letter == 'e':
count += 1.0
ratio = count/(len(word))
return ratio
hasnoe('eeeeeeheif')
但是当我尝试它,电脑没有返回值的 - 是什么呢?
简单的计数器所以我编写返回的信件比一个超级简单的计数器:创建的字母
def hasnoe(word):
count = 0
for letter in word:
if letter == 'e':
count += 1.0
ratio = count/(len(word))
return ratio
hasnoe('eeeeeeheif')
但是当我尝试它,电脑没有返回值的 - 是什么呢?
您不能从一个函数返回多个时间。在循环的第一个字母后,您现在返回count
,因此它只能是0
或1
。
所有您需要做什么来解决这个删除return count
def hasnoe(word):
count = 0
for letter in word:
if letter == 'e':
count += 1.0
ratio = count/(len(word))
return ratio
>>> hasnoe('eeeeeeheif')
0.7
+1的牢度..你打我..;) – 2014-11-06 13:01:39
试试这个代码返回两次
def hasnoe(word):
count = 0
for letter in word:
if letter == 'e':
count += 1.0
ratio = count/(len(word))
return ratio
hasnoe('eeeeeeheif')
你最好的选择将是,如果你想返回一个元组两个数字。
def hasnoe(word):
count = 0
for letter in word:
if letter == 'e':
count += 1.0
ratio = count/(len(word))
return ratio, count
ratio, count = hasnoe('eeeeeeheif')
>>> from collections import Counter
>>> s = 'eeeeeeheif'
>>> c = Counter(s)
>>> c
Counter({'e': 7, 'i': 1, 'h': 1, 'f': 1})
>>> den = float(len(s))
>>> freq = dict((k, v/den) for k, v in c.iteritems())
>>> freq
{'i': 0.1, 'h': 0.1, 'e': 0.7, 'f': 0.1}
您编辑您的帖子只是彻底改变的问题。正如目前所写,您的代码会产生预期的行为。 – CoryKramer 2014-11-06 13:00:11
's ='eeeeeeheif'; print s.count('e')/ float(len(s))' – 2014-11-06 13:03:58
Python2或Python3?这很重要,因为'/'的工作方式不同 – 2014-11-06 13:06:01