我对此很困惑,为什么我的函数也返回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
答案 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"))