|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Nicole37 于 2023-10-13 10:51 编辑
字符串2:
1、字符串查找功能:
count(sub[, start[, end]])
find(sub[, start[, end]])
rfind(sub[, start[, end]])
index(sub[, start[, end]])
rindex(sub[, start[, end]])
- #count用于查找指定子字符串出现的次数
- x = "今天有点烦躁奥,点杯牛奶吧"
- x.count("点")
- 2
- #后面用来指定查找的下标范围
- x.count("点",0,3)
- 0
- #find\rfind用于定位sub参数指定的子字符串在字符串中的索引下标值,find是从左往右找;rfind是从右往左找
- x.find("点")
- 3
- x.rfind("点")
- 8
- #index和rindex也用于定位sub参数指定的子字符串在字符串中的索引下标值,同理 从左往右;从右往左,与find xfind的区别就是如果找不到索引值会报错,而find会返回负一
- x.index("点")
- 3
- x.rindex("点")
- 8
- x.index("哈")
- Traceback (most recent call last):
- File "<pyshell#15>", line 1, in <module>
- x.index("哈")
- ValueError: substring not found
- x.find("哈")
- -1
复制代码
2、字符串替换功能:
expandtabs([tabsize=8])
replace(old,new,count=-1)
translate(table)
- #替换
- #expandtabs():将代码里的tab缩进转换为空格缩进,一个tab对应的空格个数为()内的数字
- z="i wan \tyou"
- print(z.expandtabs(10))
- i wan you
- #replace(old,new,count=-1)返回一个将所有old的参数指定的子字符串替换为new参数指定的字符串,默认替换次数是-1(即替换全部)
- a = "一起学习嘛"
- b=a.replace("学习","逛街")
- b
- '一起逛街嘛'
- #translate(table)返回根据table参数转换后的新字符串,table是一个表格,用str.maketrans(x[,y[,z]])来获得
- #表格的前后要同等长度,一一对应
- tab = str.maketrans("nicole","123456")
- a = "i love china"
- a.translate(tab)
- '2 54v6 3h21a'
- a.translate(str.maketrans("nicole","123456"))
- '2 54v6 3h21a'
- #maketrans还可以再加一个参数,用来将制定字符串忽略掉
- a.translate(str.maketrans("nicole","123456","love"))
- '2 3h21a'
复制代码
作业
0:2
1:报错的格式不一样
2:3
3:A
4:报错 表格前后个数不一致
5:'I FishC.cm'
动手:
- x = input("请输入第一个版本号,v1=")
- y = input("请输入第一个版本号,v2=")
- b = x.find(".")
- c = y.find(".")
- if int(x[b-1])>int(y[c-1]):
- print("v1")
- if int(x[b-1])<int(y[c-1]):
- print("v2")
- if int(x[b-1])==int(y[c-1]):
- if int(x[b+1])>int(y[c+1]):
- print("v1")
- if int(x[b+1])<int(y[c+1]):
- print("v2")
复制代码
1:- x = input("请输入需要加密的明文:")
- y = input("请输入需要替换的字符:")
- z = input("请输入将要替换的字符:")
- p=[]
- if len(y)!=len(z):
- print("字符数量不一致")
- else:
- tab = str.maketrans(y,z)
- print("加密后的密文是",x.translate(tab))
- for i in y:
- for j in z:
- p.append(i)
- p.append(j)
- for i in range(len(p)):
- if p[i]==p[i+2]:
- print("冲突")
- break
- for i in range(1,len(p)):
- if p[i]==p[i+2]:
- print("冲突")
- break
-
复制代码
作业答案:
0:count(sub[, start[, end]]) 方法是返回 sub 在字符串中不重叠的出现次数。什么叫“不重叠”呢?就是一个元素不能被重复匹配。
- str1 = "xxxxx"
- str1.count("xx")
复制代码 答案为2
1:- print(x)
- print(x.expandtabs(2))
- print(x.expandtabs(5))
- print(x.expandtabs(10))
复制代码
结果:
- Hello***FishC
- Hello*FishC
- Hello*****FishC
- Hello*****FishC
复制代码
不懂。。。
5:- "I love FishC.com".translate(str.maketrans("love", "1234", "love"))
复制代码
'I FishC.cm',str.maketrans() 方法是先执行忽略操作,再执行替换操作
动手:
0:- v1 = input("请输入第一个版本号,v1 = ")
- v2 = input("请输入第二个版本号,v2 = ")
-
- n, m = len(v1), len(v2) #获取两版本号的长度
- i, j = 0, 0 #初始下标值
-
- while i < n or j < m: #用while来写循环,最终截止条件为:下标在长度范围内
- x = 0
- while i < n and v1[i] != '.':
- x = x * 10 + int(v1[i])
- i += 1
- i += 1
- y = 0
- while j < m and v2[j] != '.':
- y = y * 10 + int(v2[j])
- j += 1
- j += 1
- if x > y:
- print("v1")
- break
- elif x < y:
- print("v2")
- break
-
- if x == y:
- print("v1 = v2")
复制代码 不懂。。。
1:- plain = input("请输入需要加密的明文:")
- x = input("请输入需要替换的字符:")
- y = input("请输入将要替换的字符:")
-
- # 加密的代码
- if len(x) != len(y):
- print("需要替换的字符数量必须跟将要替换的字符数量一致!")
- else:
- cipher = plain.translate(str.maketrans(x, y))
- print("加密后的密文是:" + cipher)
-
- # 检测冲突的代码
- # flag 变量标志是否退出检测(只要找到一个冲突,就可以直接退出)
- flag = 0
-
- # 如果 x 中存在相同的字符,那么 y 对应下标的字符也应该是相同的
- for each in x:
- if x.count(each) > 1 and flag == 0: #连用x.count()判断x中是否有相同字符,x.find()找出重复字符的下标
- i = x.find(each)
- last = y[i]
- while i != -1: #使用while 循环,其条件是最终结果,在未到头之前,判断y 对应下标的字符是否相同
- if last != y[i]:
- print("由于替换字符出现冲突,该密文无法解密!")
- flag = -1
- break
-
- i = x.find(each, i+1)#从下标i+1开始继续搜索下一个each的下标 返回while
-
- # 如果 y 中存在相同的字符,那么 x 对应下标的字符也应该是相同的
- for each in y:
- if y.count(each) > 1 and flag == 0:
- i = y.find(each)
- last = x[i]
- while i != -1:
- if last != x[i]:
- print("由于替换字符出现冲突,该密文无法解密!")
- flag = -1
- break
-
- i = y.find(each, i+1)
-
复制代码
|
|