为了账号安全,请及时绑定邮箱和手机立即绑定

有输入时如何计数

有输入时如何计数

繁华开满天机 2021-03-22 16:19:12
我正在尝试编写一个不接受输入但要求输入名称的函数。如果输入一个空字符串,该函数应为每个名称打印具有相同名称的人数。例如:>>>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:    There is 1 person named JohnThere is 1 person named NickThere are 2 people named PaulThere 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)我敢肯定我没有正确计数。在不知道会有多少个不同的名称的情况下,您将如何正确地执行此功能,以及如何区分不同的输入并对它们进行计数?此外,如果可能的话,即使效率不高,我仍希望在学习的同时获得基本代码。
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

只是为了好玩,单线执行此操作:


>>> collections.Counter(iter(functools.partial(input, "Enter a 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: 

Counter({'Bill': 3, 'Paul': 2, 'Nick': 1, 'John': 1})

这可能不是在真实代码中执行此操作的方法。


查看完整回答
反对 回复 2021-03-31
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

from collections import defaultdict

dic = 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.py

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 is 2 person named Paul

There is 3 person named Bill


查看完整回答
反对 回复 2021-03-31
  • 3 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信