不返回时返回None

时间:2018-08-24 17:33:01

标签: python char

我对此很困惑,为什么我的函数也返回None?

def CharFreq(string):

    l = list(string)

    for i in range(len(l)):
        count = 0
        print(l[i])
        for j in range(0,len(l)):
               if l[i] == l[j] :
                  count+=1
       print (l[i],count)

print(CharFreq("hih"))

首先,我的函数也返回None,并且当我放置print(l[i])行时,它也确实返回None ..但是当我单独执行此操作时,看不到任何None:

 l = list("hih")
for i in range(len(l)):
    print(l[i])

第二,我正在尝试使用两个循环为char频率开发一种基本方法,不仅它也返回None,而且看来我的索引是错误的,我需要它返回:

h , 2
i, 1

2 个答案:

答案 0 :(得分:1)

我强烈建议使用字典来计算字符数。

它们可以按以下方式实现:

def CharFreq(string):

    str_count = dict()
    for i in string:
        if i in str_count:
            str_count[i] += 1
        else:
            str_count[i] = 1
    return str_count

print(CharFreq("hih"))

输出:

{'h': 2, 'i': 1}

回到您的解决方案,

它打印出None,因为您没有从函数调用中返回任何内容。只需调用该函数即可为您打印所需的输出。

答案 1 :(得分:0)

def CharFreq(string):

    n= len(string)
    ll=[]
    for i in range(n):
        count = 0

        for j in range(n):
                if string[i] == string[j] :
                   count+=1
        if (string[i],count) not in ll:        
               ll.append(tuple((string[i],count)))
    return ll  

print(CharFreq("hih"))