python基础·练习1(字符串作业)

python基础·练习1

  • 字符串作业
    • 一、填空
    • 二、编程
      • 初级
      • 中级

字符串作业

一、填空

1.已知s2 = ‘123’,则:s2 * 3 = ___________; s2 + str(456) = ___________;

s2 = '123'
print(s2 * 3) #123123123
print(s2 + str(456)) #123456

2.已知s1 = ‘123456789’。则: s1[:3] = ________; s1[-5:] = ____________; s1[::2]=______; s1[::-3] = _______; int(s1[3:5]) + int(s1[-5:3:-1]) = _______

s1 = '123456789'
print(s1[:3]) #123
print(s1[-5:]) #56789
print(s1[::2]) #13579
print(s1[::-3]) #963
print(int(s1[3:5]) + int(s1[-5:3:-1])) #50

3.已知s1 = “this is a test of Python”;统计字符串中s出现的次数:____________;取出子串”test”的表达式:___________; 获取s1的反序字符串:______________; 将子串”test”替换为”exam”:

s1 = 'this is a test of Python'
s=0
for i in s1:
    if i == 's':
        s+=1
print(s)  # 3
print(s1.count('s'))  # 3
print(s1[10:14])
print(s1[::-1]) #nohtyP fo tset a si siht
s2 = s1.replace('test','exam')
print(s2)  #this is a exam of Python

4.已知字符串 a = “aAsmr3idd4bgs7Dlsf9eAF”,要求如下:将a字符串的大写改为小写,小写改为大写:__________________;转为小写字符串:______________________

a = "aAsmr3idd4bgs7Dlsf9eAF"
print(a.lower()) #aasmr3idd4bgs7dlsf9eaf
print(a.upper()) #AASMR3IDD4BGS7DLSF9EAF

5.已知x=“abc”,y=“def”,z=[“d”,“e”,“f”], 则x.join(y)= ________________; x.join(z) = __________________________

x="abc"
y="def"
z=["d","e","f"]
print(x.join(y)) #dabceabcf
print(x.join(z)) #dabceabcf

6.把s1=”你好”,编码为字节流字符串:______________________

s1='你好'
print(s1.encode()) #b'\xe4\xbd\xa0\xe5\xa5\xbd'

7.已知字符串:s2 = ‘ wh2002 ’,去除s2左边的空格:___________;去除s2右边的空格:____________;去除s2两边的空格:______________;

s2 = '  wh2002  '
print(s2.rstrip()) #  wh2002
print(s2.lstrip()) #wh2002  
print(s2.strip())  #wh2002

8.定义变量s=‘abcde’, 写出下列代码运行的结果

s.upper()  ________________ 
s[2::-1]    ________________
s.isdigit()  ________________
s * 2   ________________
'*'.join(list(s)[:3])  ________________
s='abcde' 
print(s.upper()) #ABCDE
print(s[2::-1]) #cba
print(s.isdigit()) #False
print(s * 2) #abcdeabcde
print( '*'.join(list(s)[:3]) ) #a*b*c

二、编程

初级

1 利用列表推导式, 完成以下需求

a. 生成一个存放1-100中个位数为3的数据列表

结果为 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
str1 = [x for x in range(1, 100) if x % 10 == 3]
print(str1)

b. 利用列表推到是将 列表中的整数提取出来

例如:[True, 17, "hello", "bye", 98, 34, 21] --- [17, 98, 34, 21]
str1=[True, 17, "hello", "bye", 98, 34, 21]
str1 = [x for x in str1 if type(x) == int]
print(str1)

c. 利用列表推导式 存放指定列表中字符串的长度

例如 ["good", "nice", "see you", "bye"] --- [4, 4, 7, 3]
str1=["good", "nice", "see you", "bye"]
str1 = [len(x) for x in str1]
print(str1)

2 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)

例如: 输入 ‘abcd1234’ 输出 ‘bd24’

a = input('请输入一串字符:')
res = a[1::2]
print(res)

3 输入字符串,获取字符串的中间字符

例如:输入’abc1234’ 输出:‘1’ 输入**‘abc123’** 输出**‘c1’**

a = input('请输入一串字符:')
m=len(a)
p= int(m/2-1)
q = int((m+1)/2-1)
for i in a:
    if m % 2 == 0:
        res = a[p:p+2]
    else:
        res = a[q]
print(res)

4 输入一个字符串,自己统计该字符串有多少个字符,不允许用len函数

s = input('请输入一串字符:')
count=0
for i in s:
    count+=1
print('字符串个数为:',count)

5 输入用户名,判断用户名是否合法,用户名的要求:用户名中只能由数字或者字母组成

例如: ‘abc’ — 合法 ‘123’ — 合法 ‘abc123a’ — 合法 ‘abc-23’ — 不合法

name = input('请输入用户名:')
for x in name:
    if not ('a' <= x <= 'z' or 'A' <= x <= 'Z' or '0' <= x <= '9'):
        print('用户名不合法!')
        break
else:
    print('用户名合法')

6 输入一个字符串,判断字符串中有多少个字母?多少个数字?多少个其他符号

例如:'hello, nice to meet you. i am 18. my birthday is 1999-05-23'
		-- 结果: 字母的个数为33个,数字个数为10个, 其他字符为16个
str = input('请输入一个字符串:')
s,n,m = 0,0,0
for x in str:
    if ('a' <= x <= 'z' or 'A' <= x <= 'Z'):
        s+=1
    elif('0' <= x <= '9'):
        n+=1
    else:
        m+=1
print('字母的个数为%d个,数字个数为%d个, 其他字符为%d个' % (s,n,m))

7 以下是一段歌词,请从这段歌词中统计出朋友出现的次数。

这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。
geci = '这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。'
print(geci.count('朋友'))

8 编写敏感词过滤程序
说明:在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。如“性”、“色情”、“爆炸”、“恐怖”、“枪”、“军火”等,这些都不可以在网上进行传播,要求输入一段文本,如果包含以上的敏感词汇,需要*替换掉

例如:“性感小伙 军火走私 原地爆炸” ---- 结果为 "*感小伙 **走私 原地**"

敏感词几个字 使用几个*代替
s = '性感小伙 军火走私 原地爆炸'
stopword = ['性','色情','爆炸','恐怖','枪','军火']
import re
def sentence_filter(stopword, s):
    return re.sub("|".join(stopword), "**", s)
print(sentence_filter(stopword, s))

或者:

from functools import reduce
filter = ('性', '色情', '爆炸', '恐怖', '枪', '军火')
msg = '性感小伙 军火走私 原地爆炸'
res = reduce( lambda m,f:m.replace(f,'**'), (msg,)+filter )
print(res)

中级

1 随机生成长度为5的验证码字符串, 验证码的组成是英文字母或者数字

import random
import string
random_str = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(5))
print(random_str)

2 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符

在这里插入代码片

3 求字符串最后一个单词的长度,单词之间用空格分割。

Str1 = input('Str1: ')
s = Str1.split(' ')
print(len(s[::-1]))

4 输入一个字符串,压缩字符串如下aabbbccccd变成a2b3c4d1

def yasuo(str1):
    list1=list(str1)
    len1=len(list1)
    for s in list1:
       n=0
       for i in range(len1):
          if(list1[i]==s):
              n+=1
              list1[i]=' '
       if(s==' '):
           continue
       else:
           print(s,n,end='',sep='')
str3=input('输入一个')

print(yasuo(str3))

5 input函数每次只能输入一个字符串,请实现如下输入格式:1 20 30 。然后将获得的字符串分割,得到:三个整数:1 20 30,然后赋值给三个变量。

a = input("")
b = a.split(" ")
c, d, e = [int(i) for i in b]
print(c, d, e)

6 将s = “ajldjlajfdljfddd",去重并从小到大排序输出"adfjl"

s = "ajldjlajfdljfddd"
a = list(set(s))
a.sort()
b = " ".join(a)
print(b)

7 已知字符串 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) #3479

ch_lower=a.lower()
s1=set(ch_lower)
dict_count={}
for ch in s1:
    dict_count[ch]=ch_lower.count(ch)
print(dict_count) #{'g': 1, 'r': 1, 'i': 1, 'd': 3, 'f': 2, 'b': 1, 'l': 1, 'a': 3, '3': 1, 'm': 1, '4': 1, '9': 1, 'e': 1, 's': 3, '7': 1}
max_count=max(dict_count.values())
for key in dict_count:
    if dict_count[key]==max_count:
        print(key,end=' ')
#d a s True
for ch in 'boy':
    if ch not in a:
        print(False)
        break
    else:
        print(True)
#False

参考文章链接1: link1.
参考文章链接2:link2
参考文章链接2:link3

你可能感兴趣的:(python基础练习,python,正则表达式,字符串,列表)