第五章 字符串 课后练习题

本文介绍了20个关于Python字符串处理的练习题,涵盖了分解质因数、字符位置筛选、字符统计、列表插入、字母频率统计、字符替换、字符串方法实现等多样化问题,旨在提升对Python字符串操作和算法应用的理解。
摘要由CSDN通过智能技术生成

目录

1. 将一个正整数分解质因数

2. 一个字符串中,分别输出奇数坐标字符或偶数坐标字符,奇数坐标的一行,偶数坐标的一行

3. 统计字符串中的字母、数字、其他字符个数

4. 有一个已经排好序的列表。现输入一个数,要求按原来的规律将它插入列表中

5. 统计名字列表中,各名字的首字母在名字列表中出现的次数

6. 字符替换

7. 找出字符串中出现次数最多的字符,并输出其出现的位置

8. 找出一段句子中最长的单词及其索引位置,以字典返回

9. 字母游戏

10. 实现字符串的upper、lower以及swapcase方法

11. 实现字符串的find方法

12. 实现字符串的isalpha方法

13. 实现字符串的isdigit方法

14. 实现字符串的isalnum方法

15. 实现字符串的join方法

16. 实现字符串的replace方法

17. 实现字符串的split方法

18. 实现字符串的strip方法

19. 报数问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

20. 由单个字母组成的list,从键盘读入两个整数m、n(n>m),打印出list[m,n]之间的字母能组成的所有n-m+1位不同的字符串


1. 将一个正整数分解质因数

def prime_factor(n):
	"""
	对n分解质因数,并返回它的质因数	
    算法:分解质因数只针对合数。求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。
	"""
	if not isinstance(n,int):
		return n
	prime_list = []
	while n!=1:
		for i in range(2,n+1):
			if n % i == 0:
				prime_list.append(i)
				n //= i
				break
	return prime_list


n=180
result = prime_factor(n)
r_len = len(result)
print("分解质因数:%d = " %n,end="")
for i in range(r_len):
	if i == r_len-1:
		print(result[i])
	else:
		print(result[i],end=" * ")

2. 一个字符串中,分别输出奇数坐标字符或偶数坐标字符,奇数坐标的一行,偶数坐标的一行

s="Reading for pleasure and reading for study are not the same"
s_len=len(s)
odd_str,even_str="",""
for i in range(s_len):
	if i % 2 ==	0:
		even_str += s[i]
	else:
		odd_str += s[i]
		
print("odd coordinates string:", odd_str)
print("even coordinates string:", even_str)

3. 统计字符串中的字母、数字、其他字符个数

import string
s="If you co-ordinate 12 clothes or furnishings that are used together 8, or if they co-ordinate, they are similar in 30 some way and look nice together."
num_count = 0
letter_count = 0
other_count = 0
# print(len(s))
for i in s:
	if i in string.digits:
		num_count += 1
	elif i in string.ascii_letters:
		letter_count += 1
	else:
		other_count += 1

print("字符串中字母个数:%d, 数字个数:%d, 其他字符个数:%d" % (letter_count,num_count,other_count))

4. 有一个已经排好序的列表。现输入一个数,要求按原来的规律将它插入列表中

l=[21,25,28,33,40,56]
l_len=len(l)
num = int(input("请输入一个数字:"))
for i in range(l_len):
	if l[i] > num:
		l.insert(i,num)
		break
	if i == l_len - 1:
		l.append(num)

print("插入后:",l)

5. 统计名字列表中,各名字的首字母在名字列表中出现的次数

name_list = ["Amanda","Jack","Amy","Anthony","Vicky","Bob","Timmy","Ben","Andy","Neil","Mark","Stephen"]
d={}
for name in name_list:
	if name[0] not in d.keys():
		d[name[0]] = 1
	else:
		d[name[0]] += 1
print(d)

6. 字符替换

        1)读入一个字符串
        2)去掉字符串的前后空格
        3)如果字符串包含数字则1替换成a,2替换成b,3替换成c,以此类推
        4)将字符串使用空格进行切分,存到一个列表,然后使用*号连接,并输出
        5)把这些功能封装到一个函数里面,把执行结果作为返回值
def str_replace():
	s=input("please input:")
	s=s.strip()
	result = ""
	for i in s:
		if i >= "1" and i<="9":
			result += chr(ord("a")-ord("1")+ord(i))
		elif i == "0":
			result += chr(ord("a")-ord("1")+ord(i)+9)
		else:
			result += i
	return "*".join(result.split())


print("After replace:",str_replace())

7. 找出字符串中出现次数最多的字符,并输出其出现的位置

def find_word(s):
	if not isinstance(s,str):
		return -1
	d={}
	s_len=len(s)
	# 统计字符串中每个字符的出现次数
	for i in s:
		if i not in d.keys():
			d[i] = 1
		else:
			d[i] += 1
	# 找到出现次数最多的字符
	max_word=""
	max_value=0
	for k,v in d.items():
		if v > max_value:
			max_value = v
			max_word = k
	# 统计并输出其出现的位置
	index_list=[]
	for i in range(s_len):
		if s[i] == max_word:
			index_list.append(i)
	# 返回出现次数最多的字符、出现次数及其出现位置
	return max_word,max_value,index_list


s=input("请输入字符串:")
result = find_word(s)
print("出现次数最多的字符是:%s,出现次数为:%d.\n其出现位置是:%s" % (result[0],result[1],result[2]))

8. 找出一段句子中最长的单词及其索引位置,以字典返回

import string
# 方法1
def find_longest_word(s):
	# 用""替换特殊字符
	new_s = ""
	for i in s:
		if i in string.punctuation: 
			new_s += "" # 也可以直接使用s.replace(i,"")
		else:
			new_s += i
	# 用空格分隔字符串
	result = new_s.split()
	longest_wo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值