ord() 期望一个字符
ord () expected a character
我想通过txt文件解密代码。但是报错ord() expected a character, but a string of length 586 was found。有什么修复建议吗? (我使用 python 3.9)
def decrypt(string, shift):
cipher = ''
for char in string:
if char == ' ':
cipher = cipher + char
elif char.isupper():
cipher = cipher + chr((ord(char) - shift - 65) % 26 + 65)
else:
cipher = cipher + chr((ord(char) - shift - 97) % 26 + 97)
return cipher
text = open(input("enter string: "))
s = int(input("enter shift number: "))
print("original string: ", text)
print("after decryption: ", decrypt(text, s))
text
是一个可迭代对象,它生成一系列字符串,文件中每行一个。因此,char
是文件的整行,而不是给定行的单个字符。
decrypt
很好(尽管您应该使用 join
方法而不是重复将字符附加到不断增长的字符串);您对 text
的使用需要修正。
text = open(input("enter string: "))
s = int(input("enter shift number: "))
for line in text:
print("original string: ", line)
print("after decryption: ", decrypt(line, s))
如果你想把整个文件作为一个字符串,直接调用它的read
方法:
text = open(input("enter string: "))<b>.read()</b>
s = int(input("enter shift number: "))
print("original string: ", text)
print("after decryption: ", decrypt(text, s))
(我故意忽略任何 str
-vs-bytes
关于使用从 text
读取的数据的问题。)
我想通过txt文件解密代码。但是报错ord() expected a character, but a string of length 586 was found。有什么修复建议吗? (我使用 python 3.9)
def decrypt(string, shift):
cipher = ''
for char in string:
if char == ' ':
cipher = cipher + char
elif char.isupper():
cipher = cipher + chr((ord(char) - shift - 65) % 26 + 65)
else:
cipher = cipher + chr((ord(char) - shift - 97) % 26 + 97)
return cipher
text = open(input("enter string: "))
s = int(input("enter shift number: "))
print("original string: ", text)
print("after decryption: ", decrypt(text, s))
text
是一个可迭代对象,它生成一系列字符串,文件中每行一个。因此,char
是文件的整行,而不是给定行的单个字符。
decrypt
很好(尽管您应该使用 join
方法而不是重复将字符附加到不断增长的字符串);您对 text
的使用需要修正。
text = open(input("enter string: "))
s = int(input("enter shift number: "))
for line in text:
print("original string: ", line)
print("after decryption: ", decrypt(line, s))
如果你想把整个文件作为一个字符串,直接调用它的read
方法:
text = open(input("enter string: "))<b>.read()</b>
s = int(input("enter shift number: "))
print("original string: ", text)
print("after decryption: ", decrypt(text, s))
(我故意忽略任何 str
-vs-bytes
关于使用从 text
读取的数据的问题。)