使用stings列表进行python加密和解密[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用stings列表进行python加密和解密[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在编写一个代码,用于加密用户输入的String列表。这些列表将被加密,然后将被解密。但是一旦它到达加密部分就会给我这个错误。
回溯(最近一次调用最后一次):文件“C:/Users/dana/Desktop/q2.py”,第16行,在x = ord(c)中TypeError:ord()需要一个字符,但找到长度为4的字符串
我确信即使在解密部分也会出现同样的错误。
这是我的代码:
# Encryption
list1=[]
list2=[]
i = 0
while not(False):
plain_text = input ("Enter any string ")
if (plain_text !='q'):
list1.append(plain_text)
i=i+1
else:
break
encrypted_text = ""
for c in list1:
x = ord(c)
x = x + 1
c2 = chr(x)
encrypted_text = encrypted_text + c2
print(encrypted_text)
#Decryption
encrypted_text = "Uijt!jt!b!uftu/!BCD!bcd"
plain_text = ""
for c in encrypted_text:
x = ord(c)
x = x - 1
c2 = chr(x)
plain_text = plain_text + c2
print(plain_text)
list2=[encrypted_text]
print(plain_text)
print("the original msgs are :" , list1)
print("the encrypted msgs are :" ,list2)
答案
ord()采用单个字符
for c in list1:
x = ord(c)
但上面的循环返回字符串为C,这就是为什么你得到错误更正代码
list1=[]
list2=[]
i = 0
while not(False):
plain_text = input ("Enter any string ")
if (plain_text !='q'):
list1.append(plain_text)
i=i+1
else:
break
encrypted_text = ""
for c in list1: #Changed Code
for c1 in c:
x = ord(c1)
x = x + 1
c2 = chr(x)
encrypted_text = encrypted_text + c2
print(encrypted_text)
#Decryption
encrypted_text = "Uijt!jt!b!uftu/!BCD!bcd"
plain_text = ""
for c in encrypted_text:
x = ord(c)
x = x - 1
c2 = chr(x)
plain_text = plain_text + c2
print(plain_text)
list2=[encrypted_text]
print(plain_text)
print("the original msgs are :" , list1)
print("the encrypted msgs are :" ,list2)
另一答案
list1
包含用户为响应input
提示而输入的任何字符串。
然后你的第一个for循环遍历list1
。 c
承担了list1
元素的价值观。然后你在ord
上使用c
。我希望你的意图是在ord
的元素上使用c
。尝试在某处添加一个额外的循环。
另外,请考虑将代码组织到函数中。
以上是关于使用stings列表进行python加密和解密[重复]的主要内容,如果未能解决你的问题,请参考以下文章