使用 ASCII 将 13 添加到字符串中(并保留其他字符,如 !@> 和空格)



我必须使用 ord(( 和 chr(( 在 python 3.7 中编写一个 rot13 程序。

我尝试做一些代码说: 对于不在"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"中的字母: 新字母 = 字母 这实质上意味着,如果有一个不同的字符不是字母(如 !、@ 或 #(,则该字符保持为同一事物。我不知道为什么整个单词不起作用并且它很早就停止了。

def rot_13(string):
length = len(string)
for letter in string:
number = ord(letter)
newNumber = number + 13
newLetter = chr(newNumber)
string = string + newLetter
return string[length:]
print(rot13('Hello World'))

例如,"Hello World!"应该输出"Uryyb Jbeyq!"我得到"Uryy|-d|yq"代替...

此脚本应该执行您想要的操作。基本上你需要知道字母是大写还是小写(标准ROT13密码仅适用于26个大写字母(。

legal_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
def rot_13(s):
rv = ''
for letter in s:
if letter not in legal_chars:
rv += letter
continue
a = ord('A') if letter.isupper() else ord('a')
rv += chr(a + (ord(letter) - a + 13) % 26)
return rv
print(rot_13('Hello World!'))

指纹:

Uryyb Jbeyq!

最新更新