鱼C论坛

 找回密码
 立即注册
查看: 738|回复: 0

[学习笔记] 零py-(ep-19)

[复制链接]
发表于 2023-10-13 10:51:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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)
            
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 08:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表