【问题描述】 有一行电文,已按下面规律译成密码: A--Z a--z B--Y b--y C--X c--x ...... 即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母; 非字母字符不变。编写程序把密码译回原文,并输出密码和原文。 【输入形式】 输入一串密码 【输出形式】 首先输出密码,然后换行后输出原文 【样例输入】 4sdf&13TBD 【样例输出】 4sdf&13TBD 4hwu&13GYW
时间: 2024-03-12 20:43:54 浏览: 93
以下是Python的实现代码:
```python
message = input() # 输入密码
encrypted = '' # 存储加密后的字符串
for c in message:
if c.isalpha():
if c.isupper():
encrypted += chr(ord('A') + ord('Z') - ord(c))
else:
encrypted += chr(ord('a') + ord('z') - ord(c))
else:
encrypted += c
print(encrypted) # 输出加密后的字符串
decrypted = '' # 存储解密后的字符串
for c in encrypted:
if c.isalpha():
if c.isupper():
decrypted += chr(ord('A') + ord('Z') - ord(c))
else:
decrypted += chr(ord('a') + ord('z') - ord(c))
else:
decrypted += c
print(decrypted) # 输出解密后的字符串
```
以上代码中,我们首先读入密码并存储到变量 `message` 中,然后使用一个循环遍历 `message` 中的每个字符。如果字符是字母,则根据大小写分别计算其加密后的字符,并将其添加到 `encrypted` 中;否则直接将其添加到 `encrypted` 中。接着输出 `encrypted`,即加密后的字符串。
然后我们再使用一个循环遍历 `encrypted` 中的每个字符,按照与加密相反的方式计算出其对应的原字符,并将其添加到 `decrypted` 中。最后输出 `decrypted`,即解密后的字符串。
对于输入样例 `4sdf&13TBD`,以上代码会输出:
```
4hwu&13GYW
4sdf&13TBD
```
阅读全文