一、填空
1.已知s2 = ‘123’,则:s2 * 3 = ‘123123123’; s2 + str(456) = ‘123456’;
2.已知s1 = ‘123456789’。则: s1[:3] = ‘123’; s1[-5:] = '56789’; s1[::
2]=‘13579’; s1[::-3] = ''963; int(s1[3:5]) + int(s1[-5:3:-1]) = 50。
3.已知s1 = “this is a test of Python”;统计字符串串中s出现的次数:_print(s1.count(s));
取出⼦子串串”test”的表达式:_print(s1[s1.find(‘test’):s1.find(‘test’)+5]); 获取s1的反序字符串串:
print(s1[::-1]); 将⼦子串串”test”替换为”exam”:print(s1.replace(‘test’,‘exam’))_
4.已知字符串串 a = “aAsmr3idd4bgs7Dlsf9eAF”,要求如下:将a字符串串的大写改为小写,小写改为大写:a.swapcase();转为小写字符串串:__a.lower()。
5.已知x=“abc”,y=“def”,z=[“d”,“e”,“f”], 则x.join(y)= 'dabceabcf’;
x.join(z) = 'dabceabcf’。
6.把s1=”你好”,编码为字节流字符串:print(s1.encode())_
7.已知字符串串:s2 = ‘ bj1902 ’,去除s2左边的空格:s2.rstrip()__;去除s2右边的空格:__s2.lstrip();去除s2两边的空格:s2.strip();
8.定义变量量s=‘abcde’, 写出下列列代码运⾏行行的结果
s.upper() ‘ABCDE’__
s[2::-1] ’cba’
s.isdigit() False
s * 2 ’'abcdeabcde__
'’.join(list(s)[:3]) _ab*c_______
编程
【初级】
- 输入一个字符串,自己统计该字符串有多少个字符,不允许⽤用len函数
s='abcsdgftyn2w124r598brgt98ttrde'
count=0
for i in s:
count+=1
print('字符串个数为:',count)
2.任给一个字符串串,请验证是否是手机号,手机号为11位数字,开头三位必须是130,151,186
- 使⽤用列列表存储130,151,186;使⽤用in判断
- 使⽤用切⽚片左取3位
phone = input("请输入手机号:")
if len(phone) == 11 and phone.isdecimal() and phone[:3] in ['130','151','186']:
print("手机号正确")
if len(phone) != 11:
print("手机号必须11位")
if not phone.isdecimal():
print("手机号必须是数字")
if phone[:3] not in ['130','151','186']:
print("手机号开头必须是130,151,186")
3.将字符串’1234567890’转换成‘ 1,234,567,890’输出,每3位用逗号隔开。
4.输入两个字符串串,从第一字符串串中删除第二个字符串中所有的字符
s1=input('请输入第一个字符串:')
s2=input('请输入第二个字符串:')
s=str()
for i in s1:
if i not in s2:
s=s+i
print(s)
5.任意输⼊一段文字,统计有多少个单词(用空格隔开)、多少个数字、多少字母、多少空格。
- 已知字符串串 a = “aAsmr3idd4bgs7Dlsf9eAF”,要求如下:
a.将a字符串的数字取出,并输出成⼀个新的字符串
b.请统计a字符串出现的每个字母的出现次数(忽略大小写,a与A是同一个字母),并输出成一个字典。 例例 {‘a’:4,‘b’:2}
c.输出a字符串出现频率最高的字母
d.请判断 'boy’里出现的每一个字母,是否都出现在a字符串里。如果出现,则输出True,否则,则输 出False
a = "aAsmr3idd4bgs7Dlsf9eAF"
digitNumber=''
for ch in a:
if ch.isdigit():
digitNumber+=ch
print(digitNumber)
ch_lower=a.lower()
s1=set(ch_lower)
dict_count={}
for ch in s1:
dict_count[ch]=ch_lower.count(ch)
print(dict_count)
max_count=max(dict_count.values())
for key in dict_count:
if dict_count[key]==max_count:
print(key,end=' ')
for ch in 'boy':
if ch not in a:
print(False)
break
else:
print(True)
【中级】
1.input函数每次只能输⼊一个字符串,请实现如下输⼊格式:1,20,30 。然后将获得的字符串分割,得到:三个整数:1 20 30,然后赋值给三个变量。
2.求字符串串最后⼀个单词的⻓长度,单词之间⽤用空格分割。
words=input('请输入单词,多个单词以空格分隔单词:')
last_word=words[words.rfind(' ')+1:]
print('最后一个单词长度:',len(last_word))
3.输⼊入⼀一个字符串串,压缩字符串串如下aabbbccccd变成a2b3c4d1
s1=input('请输入一个字符串:')
s2=s1[0]
count=1
for i in range(1,len(s1)):
if s1[i]==s1[i-1]:
count+=1
if i==len(s1)-1:
s2+=str(count)
else:
s2+=str(count)
s2+=s1[i]
count=1
print(s2)
4.给定⼀一个句句⼦子(只包含字⺟母和空格),将句句⼦子中的单词位置反转,单词⽤用空
格分割, 单词之间只有⼀一个空格,前后没有空格。例例如:
“hello xiao mi”-> “mi xiao hello”
words_str=input('请输入单词,以空格分隔单词:')
new_word=''
word_list=words_str.split(' ')[::-1]
for word in word_list:
new_word+=word+' '
print(new_word.strip())
5.将s = “ajldjlajfdljfddd",去重并从⼩到大排序输出"adfjl"
str1=input('请输入字符串:')
str2=sorted(set(str1))
str3=''
for ch in str2:
str3+=ch
print(str3)
6.使⽤用密码表加密
密码表加密是⼀种十分常用的密码加密⽅方法,加密的原理是根据明文和密码表,加密形成密文,根据密文和密码表解密,读出明文。密码表可以是如下表所示:
⾃己设计密码表,任意输⼊一个字符串,然后显示其密⽂。运行输⼊如下所示:
rint('''
密文表内容如下:
明文:abcdefghijklmnopqrstuvwxyz1234567890
密文:qwertyuiopasdfghjklzxcvbnm0987654321
''')
str1='abcdefghijklmnopqrstuvwxyz1234567890 '
str2='qwertyuiopasdfghjklzxcvbnm0987654321 '
message=input('请输入明文:')
secret_list=''
for ch in message:
secret_list+=str2[(str1.index(ch))]
print('加密后密文:',secret_list)
【选做】
1.凯撒密码:
凯撒密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾
经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码。通过
将字母按顺序推后起 n 位起到加密作用,如将字母 A 换作字⺟ D,将字⺟
B 换作字母 E。因据说恺撒是率先使⽤用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。 这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。现今又叫“移位密码”,只不过移动的位数不确定而已。 已知下面的⽂文字是经过“凯撒”密码加密的,请将其解密,将解密后的内容输出到屏幕上。
Rqfh pruh lqwr wkh euhdfk,ghdu iulhqgv,rqfh pruh;
Ru forvh wkh zdoo xs zlwk rxu Hqjolvk ghdg.
Lq shdfh wkhuh’v qrwklqj vr ehfrphv d pdq
Dv prghvw uwlooqhvv dqg kxplolwb:
Exw zkhq wkh eodvw ri zdu eorzv lq rxu hduv,
Wkhq lplwdwh wkh dfwlrq ri wkh wljhu;
Vwliihq wkh vlqhzv,vxpprq xs wkh eorrg.
secert_message='''Rqfh pruh lqwr wkh euhdfk,ghdu iulhqgv,rqfh pruh;
Ru forvh wkh zdoo xs zlwk rxu Hqjolvk ghdg.
Lq shdfh wkhuh'v qrwklqj vr ehfrphv d pdq
Dv prghvw uwlooqhvv dqg kxplolwb:
Exw zkhq wkh eodvw ri zdu eorzv lq rxu hduv,
Wkhq lplwdwh wkh dfwlrq ri wkh wljhu;
Vwliihq wkh vlqhzv,vxpprq xs wkh eorrg.'''
str1='abcdefghijklmnopqrstuvwxyz'
str2='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
num=int(input('请输入移位密码:'))
message=''
for ch in secert_message:
if not ch.isalpha():
message+=ch
else:
if ch.islower():
if str1.index(ch) + num <= 25:
message += str1[str1.index(ch) + num]
else:
message+=ch
elif ch.isupper():
if str2.index(ch) + num <= 25:
message += str2[str2.index(ch) + num]
else:
message+=ch
print('解密后:',message)
本文介绍了Python字符串的各种操作,包括拼接、切片、计数、替换等,并提供了初级和中级的编程练习,涉及字符串统计、手机号验证、数字分隔、字符移除等实际问题。还提及了密码加密的概念,包括凯撒密码的解密方法。

1848

被折叠的 条评论
为什么被折叠?



