Tac 发表于 2020-11-23 13:46:42

求大佬帮忙 姓氏问题

给定一个来自标准输入的家族名称列表,希望计算惟一名称的数量(多个相同的名称被计算为1),然后将其打印到标准输出。
每个姓都以一行文本的形式输入。当输入文本为空时,程序结束。

sunrise085 发表于 2020-11-23 14:36:50

你的这个家族名称到底是个列表,还是输入的啊?
#若是一个列表,程序如下
names=['Green','Li','Brown','Zhang','Li','Trump']
print(*set(names),sep='\n')
#若是输入的,程序如下
names=set()
while True:
    name=input()
    if not name:
      break
    names.add(name)
print(*names,sep='\n')

Tac 发表于 2020-11-23 14:40:09

sunrise085 发表于 2020-11-23 14:36
你的这个家族名称到底是个列表,还是输入的啊?

是这样的输入
Tanaka
Sugimoto
Wang
Tanaka
Wang
Tanaka

sunrise085 发表于 2020-11-23 14:41:16

Tac 发表于 2020-11-23 14:40
是这样的输入
Tanaka
Sugimoto


那就是第二个程序咯

Tac 发表于 2020-11-23 14:43:36

sunrise085 发表于 2020-11-23 14:41
那就是第二个程序咯

为什么输入后没输出呢?

sunrise085 发表于 2020-11-23 14:45:26

Tac 发表于 2020-11-23 14:43
为什么输入后没输出呢?

是不是你的输入最后没有输入空行啊
你的要求是输入空行的时候结束程序,所以输入完这些姓之后,再输入一个空行以结束程序

Tac 发表于 2020-11-23 14:51:02

sunrise085 发表于 2020-11-23 14:45
是不是你的输入最后没有输入空行啊
你的要求是输入空行的时候结束程序,所以输入完这些姓之后,再输入一 ...

解决了。。但是我想输出的是一共有多少个姓氏,不是这些姓氏都是那些。。。

jackz007 发表于 2020-11-23 14:52:31

本帖最后由 jackz007 于 2020-11-23 14:59 编辑

s = input() . strip()
if s:
    d = list(set(s . split()))
    print(len(d))

Tac 发表于 2020-11-23 14:56:01

jackz007 发表于 2020-11-23 14:52


可以只输出数字嘛 不要姓氏名

jackz007 发表于 2020-11-23 15:00:24

Tac 发表于 2020-11-23 14:56
可以只输出数字嘛 不要姓氏名

   没想到,画蛇添足了!8 楼的代码再测

Tac 发表于 2020-11-23 15:01:31

jackz007 发表于 2020-11-23 15:00
没想到,画蛇添足了!8 楼的代码再测

多谢多谢

Tac 发表于 2020-11-23 15:11:32

jackz007 发表于 2020-11-23 15:00
没想到,画蛇添足了!8 楼的代码再测

可以改一下成允许输入为
Tanaka
Sugimoto
Wang
Tanaka
Wang
Tanaka
这种形式的吗?
因为我输入的时候好像只能并排输入不能跨行输入

jackz007 发表于 2020-11-23 15:33:26

Tac 发表于 2020-11-23 15:11
可以改一下成允许输入为
Tanaka
Sugimoto


s = ''
while True:
    x = input() . strip()
    if x : s = s + ' ' + x
    else : break
s = s . strip()
if s:
    print(len(list(set(s . split()))))

Tac 发表于 2020-11-23 15:34:15

jackz007 发表于 2020-11-23 15:33


多谢多谢
页: [1]
查看完整版本: 求大佬帮忙 姓氏问题