亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這段幾乎相同的代碼會產生不同的結果

為什么這段幾乎相同的代碼會產生不同的結果

德瑪西亞99 2023-10-05 16:33:56
你好,我對編碼非常陌生,正在研究凱撒密碼。但是對于這段代碼`def encoder():user_string=str(input('Enter text to encrypt'))shift=int(input('Enter number to shift letters by'))for i in range(len(user_string)):    char=user_string[i]    value=ord(char)    new_value=value+shift    new_value=chr(new_value)    print(new_value,end='')def decoder():user_string=str(input('Enter text to decrypt'))shift=int(input('Enter number to shift letters by'))for i in range(len(user_string)):    char=user_string[i]    value=ord(char)    new_value=value-shift    new_value=chr(new_value)    print(new_value,end='')當我插入像 Hello world 這樣的東西時,它會返回正確的結果,但用 # 替換空格。當我將加密結果插入解碼器時,它返回完全沒有空格的字符串。兩者之間的唯一區別應該是使用 newvalue = value + shift 進行編碼,然后使用 newvalue = value-shift 進行解密。有人可以幫助我理解為什么要這樣做以及如何解決加密中的 # 和解密中沒有空格的問題。謝謝。編輯我使用的移位值是 3,確切的字符串是用于加密的 Hello world 和用于解密的相同字符串的編碼版本。
查看完整描述

1 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

這是因為空間也移動了 3。你的程序是絕對正確的。

空格的 ASCII 代碼是 32,# 的 ASCII 代碼是 35。

encoder()with?Hello world&?3shift 應該結果Khoor#zruogv

decoder()with?Khoor#zruogv&?3shift 應該結果Hello world

如果您希望空格不移動并顯示為空格,可以在 for 循環內放置 if 語句。

for i in range(len(user_string)):

? ? char=user_string[i]

? ? if char == ' ':

? ? ? ? print(char, end='')

? ? ? ? continue

? ? value=ord(char)

? ? new_value=value+shift

? ? new_value=chr(new_value)

? ? print(new_value,end='')


查看完整回答
反對 回復 2023-10-05
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號