| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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)
 
 -             
 
  复制代码 
 |   
 
 
 
 |