如何格式化 Caesar Cipher 程序的输出 python
How to format output of Ceaser Cipher program python
我正在尝试制作一个简单的 Ceaser 密码并让它主要按照我想要的方式工作。除了,我只想移动消息中的大写字母并保持小写字母不变。例如,如果消息是 "HeLLo",程序应该只移动 "H LL" 并保持 "e o" 不变。如下图
当前输出:
Message: HeLLo
Shift: 1
IFMMP
期望的输出:
Message: HeLLo
Shift: 1
IeMMo
代码:
plain_text = input("Message: ")
shift = int(input("Shift: "))
def caesar(plain_text, shift):
cipher_text = ""
for ch in plain_text:
if plain_text.lower():
plain_text = plain_text
if ch.isalpha():
final_letter = chr((ord(ch) + shift - ord('A')) % 26 + ord('A'))
cipher_text += final_letter
else:
cipher_text += ch
print(cipher_text)
return cipher_text
caesar(plain_text, shift)
您可以添加ch != ch.lower()
条件来检查字符不是小写字符,只有当它不是小写字符时才加密。
plain_text = input("Message: ")
shift = int(input("Shift: "))
def caesar(plain_text, shift):
cipher_text = ""
for ch in plain_text:
if ch.isalpha() and ch != ch.lower():
final_letter = chr((ord(ch) + shift - ord('A')) % 26 + ord('A'))
cipher_text += final_letter
else:
cipher_text += ch
print(cipher_text)
return cipher_text
caesar(plain_text, shift)
我认为你需要:
def caesar(plain_text, shift):
return "".join([chr(ord(i)+shift) if i.isupper() else i for i in plain_text])
caesar(plain_text, shift)
我正在尝试制作一个简单的 Ceaser 密码并让它主要按照我想要的方式工作。除了,我只想移动消息中的大写字母并保持小写字母不变。例如,如果消息是 "HeLLo",程序应该只移动 "H LL" 并保持 "e o" 不变。如下图
当前输出:
Message: HeLLo
Shift: 1
IFMMP
期望的输出:
Message: HeLLo
Shift: 1
IeMMo
代码:
plain_text = input("Message: ")
shift = int(input("Shift: "))
def caesar(plain_text, shift):
cipher_text = ""
for ch in plain_text:
if plain_text.lower():
plain_text = plain_text
if ch.isalpha():
final_letter = chr((ord(ch) + shift - ord('A')) % 26 + ord('A'))
cipher_text += final_letter
else:
cipher_text += ch
print(cipher_text)
return cipher_text
caesar(plain_text, shift)
您可以添加ch != ch.lower()
条件来检查字符不是小写字符,只有当它不是小写字符时才加密。
plain_text = input("Message: ")
shift = int(input("Shift: "))
def caesar(plain_text, shift):
cipher_text = ""
for ch in plain_text:
if ch.isalpha() and ch != ch.lower():
final_letter = chr((ord(ch) + shift - ord('A')) % 26 + ord('A'))
cipher_text += final_letter
else:
cipher_text += ch
print(cipher_text)
return cipher_text
caesar(plain_text, shift)
我认为你需要:
def caesar(plain_text, shift):
return "".join([chr(ord(i)+shift) if i.isupper() else i for i in plain_text])
caesar(plain_text, shift)