孤独的小鸟 发表于 2023-9-12 11:56:21

这样判断是否冲突行不行,会不会出现判断不出的情况?

mw = input("请输入要加密的明文:")
x = input("请输入需要替换的字符:")
j = input("请输入将要替换的字符:")

if len(x) != len(j):
    print("需要替换的字符数量必须跟将要替换的字符数量一致!")
else:
    jmw = mw.translate(str.maketrans(x, j))
    print(f"加密后的密文是:{jmw}")
for i in range(len(x)):
    if x.count(x) > 1 and j.count(j) == 1 or x.count(x) == 1 and j.count(j) > 1:
      print("由于替换字符出现冲突,该密文无法解密!")
      break
      

Mike_python小 发表于 2023-9-12 11:56:22

孤独的小鸟 发表于 2023-9-12 09:02
不能判断替换后的密文是否存在冲突。如果替换后的密文中出现了相同的字符,就会导致解密时无法正确还原原 ...

假设明文为 "hello world",需要替换字符 x="o",将要替换的字符 j="a"。根据代码执行流程:

1. 用户输入明文为 "hello world",需要替换的字符为 "o",将要替换的字符为 "a"。
2. 判断替换字符和将要替换的字符的数量是否一致,因为 x 和 j 的长度都为 1,所以满足条件。
3. 使用 `translate()` 方法将明文中的字符 "o" 替换为字符 "a",得到加密后的密文 "hella warld"。
4. 输出加密后的密文。

此时并没有输出判断冲突的结果,因为没有出现冲突的情况。如果出现了冲突,例如将要替换的字符中的某个字符出现了多次,而替换字符中该字符只出现了一次,或者替换字符中该字符只出现了一次,而将要替换的字符中该字符出现了多次,则会在循环中的判断部分输出 "由于替换字符出现冲突,该密文无法解密!" 的提示信息,并跳出循环。

综上所述,这段代码对于判断替换字符是否出现冲突可以正常工作,但不能判断替换后的密文是否存在冲突。实际应用中需要综合考虑具体的加密算法和密文格式,进行更全面的冲突判断。

isdkz 发表于 2023-9-12 11:56:28

这段代码的作用是对输入的明文进行字符替换加密,并判断替换字符是否出现冲突。

对于判断冲突的部分,代码中使用了一个循环来遍历替换字符和将要替换的字符,并通过 count 方法来统计每个字符在字符串中出现的次数,然后根据出现次数的不同来判断是否出现冲突。

这种判断方式是正确的,不会出现判断不出的情况。因为如果出现冲突,必然是替换字符中某个字符出现了多次,而将要替换的字符中该字符只出现了一次,或者替换字符中该字符只出现了一次,而将要替换的字符中该字符出现了多次。这两种情况都可以通过 count 方法来正确判断,因此不会出现漏判断的情况。

需要注意的是,这段代码只能判断替换字符是否出现冲突,但并不能判断替换后的密文是否存在冲突。如果替换后的密文中出现了相同的字符,就会导致解密时无法正确还原原始明文。因此,在实际应用中需要针对具体的加密算法和密文格式进行更全面的冲突判断。

孤独的小鸟 发表于 2023-9-12 12:02:30

isdkz 发表于 2023-9-12 11:56
这段代码的作用是对输入的明文进行字符替换加密,并判断替换字符是否出现冲突。

对于判断冲突的部分,代 ...

不能判断替换后的密文是否存在冲突。如果替换后的密文中出现了相同的字符,就会导致解密时无法正确还原原始明文。因此,在实际应用中需要针对具体的加密算法和密文格式进行更全面的冲突判断。

举个例子吧
页: [1]
查看完整版本: 这样判断是否冲突行不行,会不会出现判断不出的情况?