2014-11-06 52 views
0

简单的计数器所以我编写返回的信件比一个超级简单的计数器:创建的字母

def hasnoe(word): 
    count = 0 
    for letter in word: 
     if letter == 'e': 
      count += 1.0 
    ratio = count/(len(word)) 
    return ratio 

hasnoe('eeeeeeheif') 

但是当我尝试它,电脑没有返回值的 - 是什么呢?

+1

您编辑您的帖子只是彻底改变的问题。正如目前所写,您的代码会产生预期的行为。 – CoryKramer 2014-11-06 13:00:11

+2

's ='eeeeeeheif'; print s.count('e')/ float(len(s))' – 2014-11-06 13:03:58

+0

Python2或Python3?这很重要,因为'/'的工作方式不同 – 2014-11-06 13:06:01

回答

3

您不能从一个函数返回多个时间。在循环的第一个字母后,您现在返回count,因此它只能是01

所有您需要做什么来解决这个删除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 
+0

+1的牢度..你打我..;) – 2014-11-06 13:01:39

0

试试这个代码返回两次

def hasnoe(word): 
     count = 0 
     for letter in word: 
      if letter == 'e': 
       count += 1.0 
     ratio = count/(len(word)) 
     return ratio 

    hasnoe('eeeeeeheif') 
0

你最好的选择将是,如果你想返回一个元组两个数字。

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') 
1
>>> 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}