return
是一个关键字,或多或少地起作用立即退出此功能(并可选择随身携带一些输出)。因此,你需要删除return
声明:
def find_duplicate():
x =input("Enter a word = ")
for char in x :
counts=x.count(char)
print(char,counts)
此外,您还必须删除while
循环(或者,如果你想print
多次更新计数器),否则你将得到自count
停留在一个无限循环没有更新,因此测试将始终成功。
心然而,在这种情况下,将a
如果发现多次串中被打印多次(在本例中为两个)。您可以通过在字符串中第一个构建字符的set
解决这一问题,并遍历这个集:
def find_duplicate():
x =input("Enter a word = ")
for char in set(x):
counts=x.count(char)
print(char,counts)
最后是更好地使函数计算和函数做我之间的分离/ O(例如print
)。所以你最好做一个返回带有计数字典的函数,以及打印该字典的函数。您可以生成一个字典,如:
def find_duplicate(x):
result = {}
for char in set(x):
result[char]=x.count(char)
return result
以及呼叫功能:
def do_find_duplicates(x):
x =input("Enter a word = ")
for key,val in find_duplicate(x).items():
print(key,val)
而现在最好的部分是:你其实并不需要写find_duplicate
功能:有一个实用工具类即:Counter
:
from collections import Counter
def do_find_duplicates(x):
x =input("Enter a word = ")
for key,val in Counter(x).items():
print(key,val)
你马上'return' ... –
您正在寻找'collections.Counter' – Akavall
因为当你*返回*函数停止执行时...另外,为什么你将调用的结果返回给'print'?这将始终返回“无”。 –