Python PTA 实验三 组合数据类新
7-1 字典的应用-找出出现次数最多的字符串(高教社,《Python编程基础及应用》习题7-6) (30 分)
编写一个程序,从键盘读取未指定个数的字符串,一行一个,以字符串"q"为输入结束标志("q"不列入统计范围)。使用字典找出其中出现次数最多的字符串,打印该字符串及其出现次数。
注意:本题的测试用例中将保证只有一个字符串出现次数最多。
输入格式:
字符串1
字符串2
…
字符串n
q
输出格式:
字符串 出现次数
输入样例:
abc
abc
bcd
xxx
q
输出样例:
abc 2
a=input()
b=[]
b.append(a)
while(a !="q"):
a=input()
b.append(a)
b.pop()
#print(b)
c={}
for i in b:
if i in c:
c[i]=c[i]+1
else:
c[i]=1
#print(c)
d=list(c.items())
d.sort(key=lambda x:x[1],reverse=True)
m,n=d[0]
print("{} {}".format(m,n))
# 输出字典c的各个项
# for n,m in c.items():
# print(n,m)
7-2 挑选出个位数字和最高位数字相同的整数 (30 分)
在一些整数中,挑选出个位数字和最高位数字相同的整数。
输入格式:
输入若干个整数,以空格分隔。
输出格式:
打印其中个位数字和最高位数字相同的整数。如果没有这样是整数,则输出空行
输入样例1:
在这里给出一组输入。例如:
23 45 66 7237 123 313 666 5
输出样例1:
在这里给出相应的输出。例如:
66 7237 313 666 5
输入样例2:
在这里给出一组输入。例如:
34 56 78866
输出样例2:
在这里给出相应的输出(空行)。例如:
a=input().split(' ')
out_a=[]
for i in a:
if i[0]==i[-1]:
out_a.append(i)
print(' '.join(out_a))
7-3 成绩等级统计 (20 分)
输入一组用百分制(0-100之间的整数)表示的成绩列表,每个成绩用空格隔开,将其转换为等级制并进行各等级的统计。
0<=分数<60为F 60<=分数<70为D
70<=分数<80为C
80<=分数<90为B
90<=分数<=100为A
输入格式:
输入一组用空格隔开的整数表示的百分制成绩
输出格式:
输出五个成绩等级的个数,每个等级占一行
输入样例:
在这里给出一组输入。例如:
70 100 60 87 90 90 76 75 82 50
输出样例:
在这里给出相应的输出。例如:
A: 3
B: 2
C: 3
D: 1
F: 1
a=[]
a=input().split(' ')
b=[int(i) for i in a]
A,B,C,D,F=0,0,0,0,0
for i in range(len(b)):
if b[i]>=90:
A+=1
if 80<=b[i]<=89:
B+=1
if 70<=b[i]<=79:
C+=1
if 60<=b[i]<=69:
D+=1
if b[i]<60:
F+=1
print("A: %d"%A)
print("B: %d"%B)
print("C: %d"%C)
print("D: %d"%D)
print("F: %d"%F)
7-4 单词分组 (20 分)
第一行输入全部单词,第二行输入需排除的单词,编写程序,输出剩余单词(排除时对英文单词不区分大小写,输出时须按原顺序和大小写)。
输入格式:
共二行,第一行为全部单词,第二行为需排除单词,单词间用空格分隔
输出格式:
输出总单词中剩余单词
输入样例1:
樱挑 榴莲 栗子 芒果 葡萄 草莓 荔枝 枣 青梅
葡萄 草莓 榴莲 枣 青梅
输出样例1:
樱挑 栗子 芒果 荔枝
输入样例2:
apple watermelon cherry Durian chestnut mango grape strawberry
chestnut mango Apple watermelon Greengage
输出样例2:
cherry Durian grape strawberry
list1 = input().split()
list2 = input().split()
for i in list2:
for j in list1:
if j.lower()==i.lower():
list1.remove(j)
print(' '.join(list1))
7-5 字典合并 (50 分)
输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!
输入格式:
在第一行中输入第一个字典字符串;
在第二行中输入第二个字典字符串。
输出格式:
在一行中输出合并的字典,输出按字典序。
“1” 的 ASCII 码为 49,大于 1,排序时 1 在前,“1” 在后。其它的字符同理。
输入样例1:
在这里给出一组输入。例如:
{1:3,2:5}
{1:5,3:7}
输出样例1:
在这里给出相应的输出。例如:
{1:8,2:5,3:7}
输入样例2:
在这里给出一组输入。例如:
{“1”:3,1:4}
{“a”:5,“1”:6}
输出样例2:
在这里给出相应的输出。例如:
{1:4,“1”:9,“a”:5}
d1 = eval(input())
d2 = eval(input())
d3 = {}
c = 0
for i in d1:
if i in d2:
d2[i] += d1[i]
else:
d2[i] = d1[i]
for k in d2:
if type(k) == type("a"):
d3[ord(k)] = 0
if type(k) == type(1):
d3[k] = 1
print('{', end='')
for j in sorted(d3):
c += 1
if d3[j] == 0:
print('"{}":{}'.format(chr(j), d2[chr(j)]), end='')
if d3[j] == 1:
print('{}:{}'.format(j, d2[j]), end='')
if c < len(d3):
print(',', end='')
print('}')
7-6 斐波那契数列 (10 分)
意大利数学家斐波那契(Leonardo Fibonacci)是12、13世纪欧洲数学界的代表人物。他提出的“兔子问题”引起了后人的极大兴趣。 “兔子问题”假定一对大兔子每一个月可以生一对小兔子,而小兔子出生后两个月就有繁殖能力,问从一对小兔子开始,n个月后能繁殖成多少对兔子?
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个正整数n(1≤n≤46)。
输出格式:
对于每组测试,输出n个月后能繁殖成的兔子对数。
输入样例:
1
4
输出样例:
3
#生成斐波那契数列
List=[0]
a, b = 0, 1
for i in range(49):
a, b = b, a+b
List.append(a)
c=input()
c=int(c)
for i in range(c):
d=int(input())
print(List[d])
7-7 多个数的最小公倍数 (10 分)
两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数。当然,n个数也可以有最小公倍数,例如:5,7,15的最小公倍数是105。 输入n个数,请计算它们的最小公倍数。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。 每组测试先输入一个整数n(2≤n≤20),再输入n个正整数(属于[1,100000]范围内)。这里保证最终的结果在int型范围内。
输出格式:
对于每组测试,输出n个整数的最小公倍数。
输入样例:
2
3 5 7 15
5 1 2 4 3 5
输出样例:
105
60
def gcd(a,b):
if b==0:
return a
else:
return gcd(b,a%b)
def lcm(a,b):
return a/gcd(a,b)*b
t=int(input())
for i in range(t):
tmp=map(int,input().split())
tmp=list(tmp)
del tmp[0]
tmp=set(tmp)
# print(tmp)
tmp=list(tmp)
ans=0
tmp1=lcm(tmp[0],tmp[1])
if len(tmp)==2:
ans=lcm(tmp[0],tmp[1])
for i in range(2,len(tmp)):
tmp1=lcm(tmp[i],tmp1)
ans=tmp1
print(int(ans))
7-8 任意个整数累积 (30 分)
编写函数,计算任意个整数的累积。
输入格式:
输入多个整数。
输出格式:
输出累积。
输入样例:
在这里给出一组输入。例如:
1,2,3,4,5,6,7,8,9,10
输出样例:
在这里给出相应的输出。例如:
3628800
a=input().split(',')
s=1
for i in range(0,len(a)):
s=int(a[i])*int(s)
print(s)