目录
1.单词统计 — part one
【题目描述】
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
【输入描述】
输入给出一行字符。
【输出描述】
在一行中输出单词个数。
【输入样例1】
Let’s go to room 209.
【输出样例1】
5
代码:
print(len(input().split()))
2.查找指定字符
【题目描述】
用键盘输入两行,第一行是一个字符,第二行是一个字符串,查找并返回第一行中字符在第二行字符串中是否出现,若出现返回该字母在字符串中的最大下标,若不出现,返回“Not Found”。
【输入要求】
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过20个字符,超出则报错)。
【输出要求】
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"(不区分大小写),若输入时超出了20个字符,则输出“Error”。
【输入样例1】
M
programming
【输出样例1】
index = 7
【输入样例2】
a
1234
【输出样例2】
Not Found
【输入样例3】
d
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
【输出样例3】
Error
代码:
c = input().lower()
s = input().lower()
if len(s) > 20 or len(c) > 20:
print('Error')
elif s.find(c) == -1:
print('Not Found')
else:
print('index = %d' % (len(s) - s[::-1].find(c) - 1))
3.列表下标转换
【题目描述】
从键盘输入一个字符串,保证字符串中的元素仅由英文单词构成(单词之间用英文逗号隔开)。请你先对字符串中的元素进行排序(仅排序,不要改变原本的字符串),然后将字符串中的每个元素替换为它们排序后的序号。请将替换后的字符串以列表的形式输出。
【详细解释】序号代表了一个元素有多大。序号编号的规则如下:
1、序号从 1 开始编号;
2、一个元素越大,那么序号越大;
3、果两个元素相等,那么它们的序号相同;
4、英文字母按照首字母的大小进行排序,如果首字母相同,则按第二个字母进行排序,依次类推;
【输入描述】
一行英文单词,单词之间用逗号隔开。
【输出描述】
一个列表。
【输入样例1】
a,a,a
【输出样例1】
[1,1,1]
【输入样例2】
a,a,h,b,c,e,d,f,ab,dd,c,f
【输出样例2】
[1,1,9,3,4,7,5,8,2,6,4,8]
代码:
s = input().split(',')
a = s[::]
a.sort()
ans, id, cnt = [], {}, 1
for i in range(len(a)):
if not i or a[i] == a[i-1]:
id[a[i]] = cnt
else:
cnt += 1
id[a[i]] = cnt
for i in range(len(s)):
if s[i] != ',':
ans.append(id[s[i]])
print('[%d' % ans[0], end = '')
for i in range(1, len(ans)):
print(',%d' % ans[i], end = '')
print(']')
4.矩阵相加
Description
正整数n,代表要输入的是n*n的矩阵,两个矩阵由用户输入,计算输出两个矩阵相加的和。
Input
一个整数n,和两个矩阵的值。
Output
两个矩阵相加后的值,每个元素占三位,中间对齐,元素之间由两个空格组成。
Sample Input 1
3
12 3 -5
1 -9 0
3 6 8
1 8 9
6 5 4
3 2 1
Sample Output 1
13 11 4
7 -4 4
6 8 9
代码:
n = int(input())
a = [[] for i in range(n)]
for i in range(n):
a[i] = list(map(int,input().split()))
for i in range(n):
a[i] = [j + k for j, k in zip(a[i], list(map(int, input().split())))]
for i in range(n):
for j in range(n):
print(f'{a[i][j]:^3}', end = ' ')
print()
5.星期转换
【题目描述】
输入任意一个1~5之间的整数,将他们转换成对应的英文单词。例如:1转换成Monday,5转换成Friday。
Monday Tuesday Wednesday Thursday Friday
【友情提示】:用字典或是列表实现将会更快捷。
【输入描述】
输入任意一个1~7之间的整数。
【输出描述】
输出对应的英文单词。
【输入样例1】
1
【输出样例】
Monday
代码:
ans = {'1':'Monday', '2':'Tuesday', '3':'Wednesday', '4':'Thursday', '5':'Friday'}
print(ans[input()])
6.列表求平均值
【题目描述】
依次输入1到多个整数,并保存在列表中,求此列表的平均值。
【输入描述】
1到多个整数,以空格隔开。
【输出描述】
输出此列表的平均值,四舍五入保留一位小数。
【输入样例1】
1 2 3 4 5
【输出样例1】
3.0
代码:
a = list(map(int, input().split()))
print('%.1f' % (sum(a)/len(a)))
7.最常见的单词
【题目描述】
给定一个字符串 (S) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,但答案不唯一。
禁用列表中的单词用小写字母表示,不含标点符号(标点符号包括【!】【,】【.】【:】【;】【‘】【?】)。段落中的单词不区分大小写。答案都是小写字母。
【提示】注意S.split()和S.split(’ ')的使用区别,简单来说:split()切割时会将多个空格当成一个空格;split(’ ')的时候,多个空格也要分割,因此会分割出来空。
【输入描述】
输入两行,一个字符串和一个禁用单词列表。
【输出描述】
一行,最常用单词列表。
【输入样例1】
Bob hit a ball, the hit BALL flew far after it was hit.
[‘hit’]
【输出样例1】
[‘ball’]
【输入样例2】
A big black bug bit a big black bear and made the big black bear bleed
blood.
[‘a’,‘and’]
【输出样例2】
[‘big’, ‘black’]
代码:
s = list(input().lower().replace('!', ' ').replace(',', ' ').replace('.', ' ').replace(':', ' ').replace(';', ' ').replace("'", ' ').replace('?', ' ').split())
l = eval(input())
maxx = 0
for i in range(len(s)):
if s[i] not in l:
maxx = max(maxx, s.count(s[i]))
ans = []
for i in range(len(s)):
if s[i] not in l and s.count(s[i]) == maxx and ans.count(s[i]) == 0:
ans.append(s[i])
print(ans)
8.有序列表的重复项删除
【题目描述】
给你一个列表sList,请你删除重复出现的元素,使每个元素只出现一次,返回删除后列表的新长度。元素的相对顺序应该保持一致。
【输入描述】
一行整数,数字之间用逗号隔开。
【输出描述】
一个整数,为新列表的长度。
【输入样例1】
1,11,1,2,2,3,3,4,4,5
【输出样例1】
6
代码:
print(len(set(input().split(','))))
9.删除字符串中连续的重复字符
Description
通过键盘输入一串小写字母(a~z)组成的字符串,编写一个测试程序,将字符串中连续出现的重复字符删去(即在一个字符串中,如果遇到连续重复的字符只出现一次),然后输出处理后的字符串。例如:str1=“aabbccddaabbccdd”,输出结果为:“abcdabcd”。
Input
共一行,为一个字符串。
Output
共一行,为删除连续的重复字符后得到的新字符串。
Sample Input 1
aabcccccaaa
Sample Output 1
abca
代码:
s = input()
ans = s[0]
for i in range(1,len(s)):
if s[i]!=s[i-1]:
ans+=s[i]
print(ans)
10.字符串替换
Description
将给定字符串中的大写字母和小写英文字母都按以下对应规则替换:
Input
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
Output
输出在一行中给出替换完成后的字符串。
Sample Input 1
CAPItaL LeTtERS
Sample Output 1
The replaced text is:XZKRgzO OvGgVIH
代码:
s = input()
ans = ''
for i in range(len(s)):
if s[i] >= 'a' and s[i] <= 'z':
ans += chr(ord('z')+ord('a')-ord(s[i]))
elif s[i] >= 'A' and s[i] <= 'Z':
ans += chr(ord('Z')+ord('A')-ord(s[i]))
else:
ans += s[i]
print('The replaced text is:'+ans)
11.四位数逆序输出
Description
编写一个程序,提示用户输入四位整数并以反向顺序显示。
Input
一个四位的整数。
Output
四个一位整数,在同一行输出,空格分隔,结尾无空格无换行。
Sample Input 1
1234
Sample Output 1
4 3 2 1
代码:
print(' '.join(input()[::-1]))
12.计算字符个数
Description
通过输入,在一行内接收一个仅由字母和数字组成的字符串,还有一个单一字符,然后输出“输入的字符串”中含有该字符的个数。不区分大小写。输入格式:输入一个由字母和数字组成的字符串,和一个字符,以空格隔开。输出格式:输出“输入的字符串”中含有该字符的个数。
【提示】:1、必须使用字符串处理方法str.lower()或str.upper()。2、输入数据仅占一行,获取输入的字符串和字符必须使用str.split()分别获取。
输入样例:
a1234bAcdeAf a
输出样例:
3
代码:
s1, s2 = input().split()
print(s1.upper().count(s2.upper()))