python - Python Caesar Cipher 样式程序:为什么 python 给我不支持的操作数类型的 TypeError?
问题描述
我正在做一个项目,并且正处于项目的最后阶段,但遇到了这个错误:
Secret message: hello
shift: 4
Traceback (most recent call last):
File "program.py", line 5, in <module>
next_code = code + str(move)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我已经尝试过替代解决方案,但加号真的让我很困扰。因为我是初学者,所以我不太擅长这个东西,所以我需要一些帮助,我也想知道如何让它只切换大写字符,而不是符号。这是我的代码:
ask = input("Secret message: ")
move = input("shift: ")
for i in ask:
code = ord(i)
next_code = code + str(move)
next_character = chr(next_code)
print(next_character)
为什么我会得到这个,我的问题是什么?提前致谢!
解决方案
将其添加到时需要转换move
为整数,而不是字符串ord(i)
next_code = code + int(move)
但是,正如您在问题中指出的那样,这只会沿着 ASCII 表中的值移动消息中的所有字符,而不是沿着字母表移动字母字符。
您可以更改方法以使用大写字母的字符串,就像 Al Sweigart 的 python 密码电子书中的凯撒密码教程中的那样。
您还可以调整代码以在加密之前检查字符是否为字母。大写字母是 ASCII 表中的值 65-90。
if 65 <= code <= 90:
# encrypt
推荐阅读
- reactjs - 拖动事件在 React 传单上不起作用
- websocket - 在 Azure 网关中监视 websocket 日志
- flutter - 为什么在编写构造函数时会出错?
- python - 仅过滤 df 中的 1 列而不在 1 行中返回整个 DF
- .net - 如何配置 Hot Chocolate GraphQL 枚举以返回枚举描述
- google-cloud-platform - Google Cloud Datafusion 与 GCP 中其他项目资源的连接问题
- python - 无法使用 ImageField,因为实际上已安装 Pillow 时未安装
- javascript - 我在一页上有 2 个图像滑块,使用相同的代码,但只有 1 个有效
- firebase-analytics - 什么是 Firebase Analytic Dashboard 上 CSV 导出的屏幕视图?
- python - 如何在特定文件夹上运行 python 脚本