有输入时如何计数

我正在尝试编写一个不接受输入但要求输入名称的函数。如果输入一个空字符串,该函数应为每个名称打印具有相同名称的人数。


例如:


>>>name()

Enter a name: Paul

Enter a name: Bill

Enter a name: John

Enter a name: Paul

Enter a name: Nick

Enter a name: Bill

Enter a name: Bill

Enter a name:    

There is 1 person named John

There is 1 person named Nick

There are 2 people named Paul

There are 3 people named Bill

到目前为止,我有:


def name():

    name = input ('Enter a name: ')

    count = 0


    while name:

        if name == input ('Enter a name: '):

            count = count + 1

        else:

            print (count)

我敢肯定我没有正确计数。在不知道会有多少个不同的名称的情况下,您将如何正确地执行此功能,以及如何区分不同的输入并对它们进行计数?


此外,如果可能的话,即使效率不高,我仍希望在学习的同时获得基本代码。


繁华开满天机
浏览 147回答 3
3回答

慕尼黑5688855

只是为了好玩,单线执行此操作:>>> collections.Counter(iter(functools.partial(input, "Enter a name: "), ""))Enter a name: PaulEnter a name: BillEnter a name: JohnEnter a name: PaulEnter a name: NickEnter a name: BillEnter a name: BillEnter a name: Counter({'Bill': 3, 'Paul': 2, 'Nick': 1, 'John': 1})这可能不是在真实代码中执行此操作的方法。

沧海一幻觉

from collections import defaultdictdic = defaultdict(int)while True:    name = input ('Enter a name: ')    if name:        dic[name] += 1    else:        for k,v in sorted(dic.items(), key = lambda x: (x[1],x[0])):            print ("There is {} person named {}".format(v,k))        break    演示:$ python3 so.pyEnter a name: PaulEnter a name: BillEnter a name: JohnEnter a name: PaulEnter a name: NickEnter a name: BillEnter a name: BillEnter a name: There is 1 person named JohnThere is 1 person named NickThere is 2 person named PaulThere is 3 person named Bill
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python