1.sdut-Map(dict)-String--单词和字符鉴别器
读入包含若干个单词的文本数据,将所有内容转换为大写,统计每个单词与该单词的出现次数。此外,还需要统计每个字符及其出现次数(不包括空格)。
输入格式:
若干行的单词,以空格作为分隔符,每行单词数量不定。
遇到一行数据“0000”,读取数据结束。(字符串“0000”不计入上述统计数据)
输出格式:
全部数据读取完成,输出如下信息:
(1)出现次数最多的单词及其出现次数;若次数相同,输出字典序最大的单词。
(2)出现次数最少的单词及其出现次数;若次数相同,输出字典序最小的单词。
(3)每个字母,按A到Z的顺序以及次数。
其中,单词和字母占10个字符位置,左对齐;计数(即:出现次数)占8位,右对齐。
提示:
Java语言,建议使用HashMap存储数据;
Python语言,建议使用dict存储数据。
输入样例:
I would rather have had one breath of her hair
one KISS of her mouth one touch of her hand than an eternity without it
I WOULD rathER haVE HAD oNe BreatH Of Her Hair
ONE kiss of her mouth one touch of her hand than an eternity WITHOUT IT
0000
输出样例:
ONE 6
AN 2
A 16
B 2
C 2
D 6
E 22
F 6
G 0
H 26
I 12
J 0
K 2
L 2
M 2
N 14
O 20
P 0
Q 0
R 16
S 4
T 20
U 8
V 2
W 4
X 0
Y 2
Z 0
代码:
import string
ss=string.ascii_uppercase
s1=''
d={}
while True:
s=input().upper()
if s=='0000':
break
s1=s1+s+" "
s1=s1.split()
s2="".join(s1)
s1.sort(reverse=True)
for i in s1:
d[i]=s1.count(i)
d1=sorted(d.items(),key=lambda x:-x[1])
print(f"{d1[0][0]:<10}{d1[0][1]:>8}")
print(f"{d1[-1][0]:<10}{d1[-1][1]:>8}")
for i in ss:
print(f"{i:<10}{s2.count(i):>8}")
2.sdut-统计工龄
给定公司N名员工的工龄,按工龄增序输出每个工龄段有多少员工。
输入格式:
首先给出正整数N(≤105 ),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]
。
输出格式:
按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。
每项占一行。
输入样例:
8
10 2 0 5 7 2 5 2
输出样例:
在这里给出相应的输出。例如:
0:1
2:3
5:2
7:1
10:1
代码:
n=int(input())
l=list(map(int,input().split()))
l.sort()
d={}
for i in l:
d[i]=l.count(i)
for k,v in d.items():
print(k,v,sep=':')
3.键盘输入学习的课程名称及考分等信息并计算
键盘输入学习的课程名称及考分等信息,屏幕输出得分最高的课程及成绩,得分最低的课程及成绩,以及平均分(保留2位小数)。
输入格式:
键盘输入学习的课程名称及考分等信息,信息间采用空格分隔,每个课程一行,空行回车结束录入。
输出格式:
屏幕输出得分最高的课程及成绩,得分最低的课程及成绩,以及平均分(保留2位小数)。
输入样例:
示例格式如下:
数学 90
语文 95
英语 86
物理 84
生物 87
输出样例:
最高分课程是语文95, 最低分课程是物理84, 平均分是88.40
代码:
d={}
while True:
s=input()
if s=='':
break
s1=s.split()
d[int(s1[1])]=s1[0]
print(f"最高分课程是{d[max(d)]}{max(d)}, 最低分课程是{d[min(d)]}{min(d)}, 平均分是{sum(d)/len(d):.2f}")
4.sdut-众数
众数是指在一组数据中,出现次数最多的数。例如:1, 1, 3 中出现次数最多的数为 1,则众数为 1。
给定一组数,你能求出众数吗?
输入格式:
输入数据有多组(数据组数不超过 50)。对于每组数据:
第 1 行输入一个整数 n (1 <= n <= 10000),表示数的个数。
第 2 行输入 n 个用空格隔开的整数 Ai (0 <= Ai <= 100000),依次表示每一个数。
输出格式:
对于每组数据,在一行中输出众数以及它出的次数,中间用空格分隔。
数据保证有唯一的众数。
输入样例:
3
1 1 3
5
0 2 3 1 2
输出样例:
1 2
2 2
代码:
while True:
try:
n=int(input())
s=input().split()
i=max(s,key=s.count)
print(i,s.count(i))
except:
break
5.sdut-查字典
遇到单词不认识怎么办? 查字典啊!
已知字典中有n个单词,现有m个不认识的单词,询问这m个单词是否出现在字典中,如果在字典中就输出其含义,如果不在字典中,就输出:Not found!
输入格式:
含有多组测试用例。
第一行输入n,m (n>=0&&n<=100000&&m>=0&&m<=100000)分别是字典中存在的n个单词,和要查询的m个单词.
紧跟着n行,代表字典中存在的单词及其解释(含义);
然后m行,要查询的m个单词。
若n=0&&m=0 程序结束
输出格式:
对于待查询的单词,若在字典中存在则输出其解释(含义),不存在输出Not found!
输入样例:
3 2
red: having the colour of blood or fire
green:having the colour of grass or the leaves of most plants and trees
blue:having the colour of a clear sky or the sea/ocean on a clear day
blue
abcded
0 0
输出样例:
having the colour of a clear sky or the sea/ocean on a clear day
Not found!
代码:
while True:
l=[]
n,m=map(int,input().split())
for i in range(n):
x=input()
l.append(x.split(":"))
d=dict(l)
for i in range(m):
s=input()
print(d.get(s,"Not found!"))
if n==0 and m==0:
break
6.词频统计-基础题
请编写程序,对一段文本(不带符号),统计其中所有不同单词的个数,以及词频最大的前5个词。
输入格式:
输入给出一段非空文本,可以是中文或者英文,词间空格或分行隔开。
输出格式:
输出词的总数和词频最大的前5个词。注意“不区分英文大小写,例如“PAT”和“pat”被认为是同一个词。
随后按照词频递减的顺序,按照“单词:词频”的格式输出词频最大的前5个词。若有并列,则按递增字典序输出。
输入样例1:
在这里给出一组输入。例如:
This is a test
so is considered as the same as long
But this_8 is different than this
输出样例1:
在这里给出相应的输出。例如:
14
is:3
as:2
this:2
a:1
but:1
代码:
l1=[]
ns=""
d={}
while True:
try:
s=input().lower()
ns=ns+s+" "
except:
break
l=ns.split()
print(len(set(l)))
for i in set(l):
l1.append([i,l.count(i)])
l1.sort(key=lambda x:(-x[1],x[0]))
for i in range(len(l1[:5])):
print(f"{l1[i][0]}:{l1[i][1]}")
7.p080最简单的单词
现有大量单词,学习者对单词评分,评价其难度。现有若干个学习者对他学习的10个的单词评分,不同的人可能对同一个单词评分。如果单词被多个人评分,它的综合评分是所有评分的平均值。找出综合评分最小的单词。
输入格式:
第一行T,表示有T组数据。
对于每组数据:
第一行N,表示有N个人。
接下来输入N*10行,每一行有一个单词,一个整数(表示评分),由空格隔开。
输出格式:
对于每组数据,输出最简单的单词。
输入样例:
2
2
ability 10
able 1
about 2
above 3
abroad 4
absent 5
accent 6
accept 7
accident 8
accord 9
apple 2
able 10
about 4
above 5
abroad 3
absent 5
accent 6
accept 7
accident 8
accord 9
1
ability 10
able 1
about 2
above 3
abroad 4
absent 5
accent 6
accept 7
accident 8
accord 9
输出样例:
apple
able
代码:
t=int(input())
for _ in range(t):
n=int(input())
d,d1={},{}
for _ in range(n*10):
k,v=input().split()
if k not in d:
d[k]=[int(v)]
else:
d[k].append(int(v))
for i,j in d.items():
d1[i]=sum(j)/len(j)
r=sorted(d1.items(),key=lambda x:x[1])
print(r[0][0])
8.计算每个学生的平均成绩
输入所有学生的姓名和成绩,以#
结束。输出每个学生的平均成绩表。
输入格式:
每一行输入一个学生的姓名和成绩,以空格分隔。
输入完成后以#
结束
输出格式:
每行显示一个学生的姓名和平均成绩,姓名占8位宽度,平均成绩保留两位小数点。姓名和平均成绩之间用空格隔开。
输入样例1:
在这里给出一组输入。例如:
Maria 20
David 10
Bob 15
David 20
#
输出样例1:
在这里给出相应的输出。例如:
姓 名 平均成绩
Maria 20.00
David 15.00
Bob 15.00
代码:
d={}
while True:
s=input()
if s=="#":
break
s=s.split()
if s[0] not in d:
d[s[0]]=[float(s[1])]
else:
d[s[0]].append(float(s[1]))
print("姓 名 平均成绩")
for k,v in d.items():
print(f"{k:<9}{sum(v)/len(v):.2f}")
9.数据提取
有一个列表 studs 如下:
studs= [{'sid':'103','Chinese': 90,'Math':95,'English':92},{'sid':'101','Chinese': 80,'Math':85,'English':82},{'sid':'102','Chinese': 70,'Math':75,'English':72}]
将列表 studs 的数据内容提取出来,放到一个字典 scores 里,在屏幕上按学号从小到大的顺序显示输出 scores 的内容。
输入格式:
无输入。
输出格式:
输出内容:
101:[85, 82, 80]
102:[75, 72, 70]
103:[95, 92, 90]
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
101:[80, 85, 82]
102:[70, 75, 72]
103:[90, 95, 92]
代码:
studs= [{'sid':'103','Chinese': 90,'Math':95,'English':92},{'sid':'101','Chinese': 80,'Math':85,'English':82},{'sid':'102','Chinese': 70,'Math':75,'English':72}]
d={}
l=[]
for i in studs:
l=list(i.values())
d[l[0]]=l[1:]
d1=dict(sorted(d.items()))
for k,v in d1.items():
print(k,v,sep=':')
10.最具人气奖选票
某校以投票方式评选优秀作品,每张选票仅填一个作品编号,得票数过半的获最具人气奖。小李收集了全部选票。现要求从全部选票中找出获最具人气奖的作品编号。
现编写 Python 程序,实现上述功能。运行程序,首先读取同学小李收集的选票编号,最后输出最具人气奖的作品编号。
输入格式:
一行输入作品编号,编号之间以空格隔开,回车表示输入结束
输出格式:
选票编号,有多个编号时,中间以英文逗号隔开
输入样例:
AS2D4 H50T1 D2S05 H50T1 H50T1 K1T03 H50T1 H50T1 WA303 H50T1 KG061 KG061 H50T1 H50T1 H50T1 JA303 K1T03 H50T1
输出样例:
在这里给出相应的输出。例如:
H50T1,
代码:
l=[]
while True:
try:
s=input()
for i in s.split():
l.append(i)
except:
break
print(max(l,key=l.count),end=',')
11.jmu-Java&Python-统计文字中的单词数量并按出现次数排序
现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。
注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。
基本版:
统计时,区分字母大小写,且不删除指定标点符号。
进阶版:
- 统计前,需要从文字中删除指定标点符号
!.,:*?
。 注意:所谓的删除,就是用1个空格替换掉相应字符。 - 统计单词时需要忽略单词的大小写。
输入说明
若干行英文,最后以!!!!!
为结束。
输出说明
单词数量
出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。
输入样例1
failure is probably the fortification in your pole
it is like a peek your wallet as the thief when you
are thinking how to spend several hard-won lepta
when you are wondering whether new money it has laid
background because of you then at the heart of the
most lax alert and most low awareness and left it
godsend failed
!!!!!
输出样例1
46
the=4
it=3
you=3
and=2
are=2
is=2
most=2
of=2
when=2
your=2
代码:
s1=""
while True:
s=input().lower()
if s=="!!!!!":
break
for i in s+" ":
if i in "!.,:*?":
s1+=" "
continue
s1+=i
ss=s1.split()
print(len(set(ss)))
l=[]
ns=list(set(ss))
for i in ns:
l.append((i,ss.count(i)))
l.sort(key=lambda x:(-x[1],x[0]))
for i in l[:10]:
print(i[0],i[1],sep='=')
12.