簡體   English   中英

凱撒密碼 Python 打印在單獨的行上

[英]Caesar Cipher Code Python printing on separate lines

下面的代碼工作正常,但是一旦加密,消息就會打印到單獨的行上。 例如,如果我輸入: abc 並且移位 1 它會對其進行加密但將其打印回:

b
c
d

我不明白為什么。 我希望它打印為:

 bcd 

這是代碼:

print("Welcome to the Code-Breaking/Making Software")
print("This program uses something called a Caesar Cipher.")

Message = (input("Please enter the message you wish to Encrypt >> "))
Shift = int(input("Please enter the shift for your message >> "))

for x in Message:
    OrdMessage = ord(x) 
    ShiftedMessage = OrdMessage + Shift
    NewMessage = chr(ShiftedMessage)
    NewMessageList = list(NewMessage)
    print("".join(NewMessageList))

縮進很重要,您不應該每次都創建新的NewMessage列表

print("Welcome to the Code-Breaking/Making Software")
print("This program uses something called a Caesar Cipher.")

Message = (input("Please enter the message you wish to Encrypt >> "))
Shift = int(input("Please enter the shift for your message >> "))

NewMessageList = []
for x in Message:
    OrdMessage = ord(x) 
    ShiftedMessage = OrdMessage + Shift
    NewMessage = chr(ShiftedMessage)
    NewMessageList.append(NewMessage)
print("".join(NewMessageList))

您應該更改以下部分;

print("".join(NewMessageList), end="")

發生的事情是,對於每個字符,它都在運行循環並打印答案,現在我已經收集了所有加密的信件,最后將它們拼湊成一個並打印出來。

它首先使用NewMessage = []初始化一個空列表,然后對於我們加密的每個字母,它使用.append()添加到該空列表中,最后通過''.join(NewMessage)打印所有內容

print("Welcome to the Code-Breaking/Making Software")
print("This program uses something called a Caesar Cipher.")

Message = (input("Please enter the message you wish to Encrypt >> "))
Shift = int(input("Please enter the shift for your message >> "))

NewMessage = []
for x in Message:
    OrdMessage = ord(x) 
    ShiftedMessage = OrdMessage + Shift
    NewMessage.append(chr(ShiftedMessage)) 
print(''.join(NewMessage))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM