Python 凯撒密码只返回第一封翻译的信?
为什么我的加密函数只返回第一个翻译的字母?(我已经删除了解密和暴力-函数)。这个问题可能是个小问题,但我对这个问题还不熟悉,我已经盯着它看了太久,没有任何东西会突然出现在我的脑海里Python 凯撒密码只返回第一封翻译的信?,python,caesar-cipher,Python,Caesar Cipher,为什么我的加密函数只返回第一个翻译的字母?(我已经删除了解密和暴力-函数)。这个问题可能是个小问题,但我对这个问题还不熟悉,我已经盯着它看了太久,没有任何东西会突然出现在我的脑海里 import string def encrypt(message,key): cryptotext="" for character in message: if character in string.uppercase: old_ascii=ord(ch
import string
def encrypt(message,key):
cryptotext=""
for character in message:
if character in string.uppercase:
old_ascii=ord(character)
new_ascii=(old_ascii+key-65)%26+65
new_char=chr(new_ascii)
cryptotext+=new_char
return cryptotext
elif character in string.lowercase:
old_ascii=ord(character)
new_ascii=(old_ascii+key-97)%26+97
new_char=chr(new_ascii)
cryptotext += new_char
return cryptotext
else:
return character
将
return
语句放入循环中。这意味着在第一次迭代之后,您将退出函数,结果只有一个字符
您的代码应该如下所示:
cryptotext = ""
for character in message:
# ...
# do the encryption, without returning
# ...
return cryptotext # after the loop has finished
return
语句从当前循环中断,这意味着加密函数应该等到循环结束后返回:
还请注意,如果字符不是大写或小写,则应附加字符,否则它只会返回错误的第一个字母。因此
加密(消息、密钥)
应该如下所示:
def encrypt(message,key):
cryptotext=""
for character in message:
if character in string.uppercase:
old_ascii=ord(character)
new_ascii=(old_ascii+key-65)%26+65
new_char=chr(new_ascii)
cryptotext+=new_char
elif character in string.lowercase:
old_ascii=ord(character)
new_ascii=(old_ascii+key-97)%26+97
new_char=chr(new_ascii)
cryptotext += new_char
else:
#Also, append character to cryptotext instead of returning it
cryptotext+= character
return cryptotext
如果你是这里的朋友,如果你愿意听从那里的建议,你甚至不必问任何问题。我刚刚注册,所以我不能+1你,但你帮了我很多!一切似乎都正常!没问题。很高兴我能帮忙@mkrieger有一个很好的答案,他/她只是错过了将
返回字符
更改为加密文本+=字符