概述
浙大版《Python 程序设计》搞心态题目集锦(NO.2)
1.请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。
所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。
输入格式:
输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。
输出格式:
在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。
随后按照词频递减的顺序,按照词频:单词的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。
输入样例:
This is a test.
The word "this" is the word with the highest frequency.
Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee. But this_8 is different than this, and this, and this...#
this line should be ignored.
输出样例:(注意:虽然单词the也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序,the排第3位,所以不输出。)
23
5:this
4:is
解题
import re
import collections
import sys
words = "".join([line for line in sys.stdin])
words = re.compile(r"w+", re.I).findall(words.lower().split('#')[0])
words = [each.strip() for each in words]
words = list(map(lambda each: each[0:15] if len(each) > 15 else each, words))
counter = collections.Counter(words)
rank = sorted(counter.items(), key=lambda each: (-each[1], each[0]), reverse=False)
print(len(rank))
for each in rank[0:int(0.1*len(rank))]:
print("{}:{}".format(each[1], each[0]))
2.利用集合分析活动投票情况。第一小队有五名队员,序号是1,2,3,4,5;第二小队也有五名队员,序号6,7,8,9,10。输入一个得票字符串,求第二小队没有得票的队员
输入格式:
在一行中输入得票的队员的序列号,用逗号隔开。
输出格式:
一行中输出第二小队没有得票的队员序号。
输入样例:
在这里给出一组输入。例如:
1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,10,9
输出样例:
在这里给出相应的输出。例如:
6 8
解题
lst = list(map(int,input().split(",")))
d = {}
flag=0
for x in range(1,11):
d[x]=0
for x in range(0,len(lst)):
if not lst[x] in d:
d[lst[x]] = 1
else:
d[lst[x]] = d[lst[x]] + 1
for i in range(6,11):
if(d[i]==0):
if(flag==0):
print(i,end="")
flag=1
else:
print(' {:d}'.format(i),end="")
3.本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如:1,1,2,3,5,8,13,…。
输入格式:
输入在一行中给出一个整数N(1≤N≤46)。
输出格式:
输出前N个Fibonacci数,每个数占11位,每行输出5个。如果最后一行输出的个数不到5个,也需要换行。
如果N小于1,则输出"Invalid."
输入样例1:
7
输出样例1:
1 1 2 3 5
8 13
输入样例2:
0
输出样例2:
Invalid.
解题
def fib(n):
a, b = 0, 1
for i in range(n + 1):
a, b = b, a + b
return a
n=int(input())
if(n>0):
for i in range(0,n):
print('{:11d}'.format(fib(i)),end="")
if((i+1)%5==0):
print("")
else:
print("Invalid.")
完毕
最后
以上就是无心马里奥为你收集整理的Python 程序设计搞心态题目集锦(PTA平台)的全部内容,希望文章能够帮你解决Python 程序设计搞心态题目集锦(PTA平台)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复