如何在Python 3凯撒密码程序中保留空格
解决凯撒密码中空格被移位的问题
你的代码问题出在没有对空格做特殊处理,所有字符(包括空格)都执行了移位操作。空格的ASCII码是32,加上移位量3后变成35,对应字符就是#,这就是你看到的结果。
修改后的代码
message = input("type in a message: ") messageInt = int(input("type in an integer: ")) newStrs = [] for letter in message: if letter == ' ': # 空格直接保留,不做移位 newStrs.append(' ') else: x = ord(letter) x += messageInt newStrs.append(chr(x)) print("".join(newStrs))
关键改动说明
- 把移位量的输入从
float改为int:凯撒密码的移位量必须是整数,不需要浮点类型,避免多余的类型转换。 - 添加空格判断逻辑:遇到空格时直接将其加入结果列表,跳过移位步骤。
测试示例
输入消息:hello there,移位量:3,输出结果:khoor wkhuh,空格正常保留。
如果需要进一步优化(比如只对字母进行移位,忽略数字、标点等其他符号),可以把判断条件改成if not letter.isalpha(),这样非字母字符都会被直接保留。
内容的提问来源于stack exchange,提问作者glitchyfuzzy
相关产品推荐
相关产品推荐

