python课后习题问题
plain = input("请输入需要加密的明文:")x = input("请输入需要替换的字符:")
y = input("请输入将要替换的字符:")
if len(x) != len(y):
print("需要替换的字符数量必须跟将要替换的字符数量一致!")
else:
cipher = plain.translate(str.maketrans(x, y))
print("加密后的密文是:" + cipher)
for each in x:
if x.count(each) > 1:
print("由于替换字符出现冲突,该密文无法解密!")
break
else:
continue
for each in y:
if y.count(each) > 1:
print("由于替换字符出现冲突,该密文无法解密!")
break
else:
continue
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:
i = x.find(each)
last = y
while i != -1:
if last != y:
print("由于替换字符出现冲突,该密文无法解密!")
flag = -1
break
i = x.find(each, i+1)
# 如果 y 中存在相同的字符,那么 x 对应下标的字符也应该是相同的
for each in y:
if y.count(each) > 1 and flag == 0:
i = y.find(each)
last = x
while i != -1:
if last != x:
print("由于替换字符出现冲突,该密文无法解密!")
flag = -1
break
i = y.find(each, i+1)
想问下大佬们 , 这两个代码有什么区别吗,第一个比较简单,但这俩最后输出的结果是一样的...
我实在看不出来这俩的区别,感觉第二个不需要那个循环也可以正常运行
第一个程序不会自己判断返回的密文是否可以解密,以及一些错误处理,
而第二个程序就会返回一些关于密文是否可解密之类的消息,以及可以对一些错误进行免报错优化处理! python爱好者. 发表于 2022-2-9 15:04
第一个程序不会自己判断返回的密文是否可以解密,以及一些错误处理,
而第二个程序就会返回一些关于密文是 ...
第一个也可以判断呀x.count(each) > 1
这个代码不就可以判断是否能解密了吗 python爱好者. 发表于 2022-2-9 15:04
第一个程序不会自己判断返回的密文是否可以解密,以及一些错误处理,
而第二个程序就会返回一些关于密文是 ...
懂了吗?不懂可以再问!懂了就给个好评呗!!!
{:10_257:}{:10_297:}{:10_281:}{:10_298:}
打字不易,请给个好评!!!
兄弟!给个好评!求求了!!!
{:10_254:}{:10_254:}{:10_254:}{:10_254:} 第一个:
请输入需要加密的明文:abcdefg
请输入需要替换的字符:aaaaa
请输入将要替换的字符:aa
需要替换的字符数量必须跟将要替换的字符数量一致!
由于替换字符出现冲突,该密文无法解密!
由于替换字符出现冲突,该密文无法解密!
第二个:
请输入需要加密的明文:abcdefg
请输入需要替换的字符:aaaaa
请输入将要替换的字符:aa
需要替换的字符数量必须跟将要替换的字符数量一致!
Traceback (most recent call last):
File "g:\Python Projects\Temp\b.py", line 22, in <module>
if last != y:
IndexError: string index out of range python爱好者. 发表于 2022-2-9 15:07
懂了吗?不懂可以再问!懂了就给个好评呗!!!
打字不易, ...
所以这两段代码似乎都有问题 python爱好者. 发表于 2022-2-9 15:14
所以这两段代码似乎都有问题
for each in x:
if x.count(each) > 1 and flag == 0:
i = x.find(each)
last = y
while i != -1:
if last != y:
print("由于替换字符出现冲突,该密文无法解密!")
flag = -1
break
i = x.find(each, i + 1)
这一段是干嘛的 我实在是没看懂
if last != y 这个语句不是一直是False吗 因为last = y 赋值了他俩相等啊 1370607278 发表于 2022-2-9 15:22
这一段是干嘛的 我实在是没看懂
这个语句不是一直是False吗 因为 赋值了他俩相等啊
应该是因为
i = x.find(each, i + 1) 但是请注意第 11 行代码:
i = x.find(each, i + 1)
再看第 6 行:
if last != y
这里的 i 变量可是会一直变的!{:10_334:} 1370607278 发表于 2022-2-9 15:22
这一段是干嘛的 我实在是没看懂
这个语句不是一直是False吗 因为 赋值了他俩相等啊
。 ckblt 发表于 2022-2-9 15:24
应该是因为
好的 谢谢 1370607278 发表于 2022-2-9 15:53
好的 谢谢
谢谢兄弟好评!
页:
[1]