python程序设计——练习10

文章提供了一系列Python编程练习题,包括统计单词个数、查找指定字符、列表下标转换、矩阵相加、星期英文转换、计算列表平均值、找出最常见单词、删除有序列表重复项、删除字符串连续重复字符、字符串替换、四位数逆序输出以及计算字符出现次数。这些练习覆盖了Python基础语法和常见数据结构的操作。
摘要由CSDN通过智能技术生成

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()))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值