Python 中的凯撒密码函数

2024-01-06

我正在尝试在 Python 中创建一个简单的凯撒密码函数,该函数根据用户的输入移动字母,并在末尾创建一个最终的新字符串。唯一的问题是,最终的密文仅显示最后一个移位的字符,而不是包含所有移位字符的整个字符串。

这是我的代码:

plainText = raw_input("What is your plaintext? ")
shift = int(raw_input("What is your shift? "))

def caesar(plainText, shift): 

    for ch in plainText:
        if ch.isalpha():
            stayInAlphabet = ord(ch) + shift 
            if stayInAlphabet > ord('z'):
                stayInAlphabet -= 26
            finalLetter = chr(stayInAlphabet)
        cipherText = ""
        cipherText += finalLetter

    print "Your ciphertext is: ", cipherText

    return cipherText

caesar(plainText, shift)

我知道这个答案并不能真正回答你的问题,但我认为它还是有帮助的。这是使用字符串方法实现凯撒密码的另一种方法:

def caesar(plaintext, shift):
    alphabet = string.ascii_lowercase
    shifted_alphabet = alphabet[shift:] + alphabet[:shift]
    table = string.maketrans(alphabet, shifted_alphabet)
    return plaintext.translate(table)

事实上,由于字符串方法是用 C 实现的,因此我们将看到此版本的性能有所提高。这就是我认为的“Pythonic”方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的凯撒密码函数 的相关文章

随机推荐

  • 使用Python ftplib上传文件时出现“553无法打开该文件:没有这样的文件或目录”

    得到这个FTP上传代码 这个例子有正确的数据 所以你可以尝试一下 该路径是正确的 因为我从选择框 filename askopenfilename I get ftplib error perm 553无法打开该文件 没有这样的文件或目录
  • 为 Spring Cloud Gateway 配置 CORS 策略

    我在单独的服务器上运行 Spring Cloud 网关 配置如下 spring cloud gateway globalcors cors configurations I also tried allowedOrigins http lo
  • JDBC ResultSet:我需要一个 getDateTime,但只有 getDate 和 getTimeStamp

    我想使用 JDBC 从 Oracle DB 表中获取 DATETIME 列 这是我的代码 int columnType rsmd getColumnType i if columnType Types DATE Date aDate rs
  • Java的隐藏特性

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 看完之后C 的隐藏特性 https stackoverflow com questions 9
  • JavaScript 在 Function 对象上使用 toString 来读取文本内容

    对下面的函数调用 toString 会在浏览器中返回不同的字符串 我理解这是因为 ECMA 262 15 3 4 2 为每个供应商留下了回旋余地 除了所有语法之外 Chrome 还会返回注释 遗憾的是 Firefox 3 6 忽略了这些注释
  • 如何将 Git 中一个分支的特定提交合并到另一个分支?

    I have BranchA提前 113 次提交BranchB 但我只想要最后 10 个左右的提交BranchA并入BranchB 有没有办法做到这一点 The git cherry pick
  • 该图像无法显示,因为它包含错误

    为什么这段代码不起作用
  • React Native Detox 模拟文件

    请有人告诉我模拟文件如何反应本机排毒测试 我关注本文 https github com wix Detox blob master docs Guide Mocking md 我正在使用react native版本0 57 7和detox
  • 从 JRuby 转换 Java 对象

    我正在使用 JRuby 中的 Java 库 我正在从文件中读取一个对象 并且需要将其作为不同的对象类型传递给第二个构造函数 hmm model ObjectInputStream new FileInputStream new LINGPI
  • Bootstrap datetimepicker 禁用分钟

    我正在使用 v4https github com Eonasdan bootstrap datetimepicker https github com Eonasdan bootstrap datetimepicker 现在我试图禁用时间选
  • mongoid 更新数组中的元素

    我正在将 mongoid 3 1 与 Ruby 1 9 3 结合使用 并尝试更新数组中的值 我可以在 mongodb 的 CLI 中成功执行以下命令 但似乎找不到适用于 mongoid 的解决方案 翻译 user update activi
  • 是否存在与堆内存分配相关的内存开销(例如堆中的标记)?

    特别是在 Windows 上使用最新的 Visual Studio C 编译器来考虑 C 我想知道heap执行 假设我使用的是发布编译器 并且我不关心内存碎片 打包问题 是否存在与在heap 如果是这样 每个分配大约有多少字节 会不会更大一
  • λProlog 拒绝假设推理查询?

    我怀疑 Prolog 的主要实现 teyjus 可能有点废弃软件 但 Prolog 是一个令人着迷的 Prolog 它应该让你使用高阶逻辑 假设推理和其他东西 这就是为什么我试图用它 文件 example sig sig example k
  • 使用 NSAlert 处理按下哪个按钮的正确方法是什么

    我已经添加了两个按钮NSAlert对象 目前按钮一的返回码是1001 并且按钮默认为1000 我需要有效地确定按下给定警报中的哪个按钮 而无需使用幻数 否则会变得混乱 void showErrorMessage NSString error
  • Cloudfoundry 是否支持需要更大内存的应用程序?

    我一直在使用 grails 开发一个网站并使用 Cloudfoundry 对其进行演示 Grails 和 Cloudfoundry 太棒了 在 STS 中 grails 插件和工具的支持下 它们易于使用 我的应用程序使用 MySQL Mon
  • 用 Javascript 对象替换窗口或文档对象

    有没有办法替换 窗口 或 文档 对象 我基本上想要的是提供某种 JavaScript 代理 我想防止用户在页面上获取 一些 只有一些 这很重要 DOM 元素 我所说的 用户 是指任何第三个小馅饼脚本 我可以做这个 document getE
  • VBA 正则表达式中的后向查找?

    有没有办法在 VBA 正则表达式中进行负向和正向向后查找 如果字符串以 A 开头 我不想匹配 所以我目前正在模式的开头执行 A 然后删除 match 0 的第一个字符 显然不是最好的方法 我正在使用 regExp 对象 VBA 提供前瞻 正
  • 计算移动设备实际行驶的距离[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想计算移动设备 iOS 和 Android 实际行驶的距离 我知道通过谷歌地图API 我们可以找到2个坐标之间的最佳路线距离 但我想
  • 如何对给定点之间的直线的所有像素位置进行采样?

    我正在做一个项目 其中包括画一条线 但是 最重要的是我需要在每个 X 位置上获取 Y 位置 因此 对于每个 X 我都需要一个 Y 当我缓慢绘制时 绘制一条线并获取位置效果很好 但是当我更快地移动光标时 即使绘制了线 也不会保存每个 X 的位
  • Python 中的凯撒密码函数

    我正在尝试在 Python 中创建一个简单的凯撒密码函数 该函数根据用户的输入移动字母 并在末尾创建一个最终的新字符串 唯一的问题是 最终的密文仅显示最后一个移位的字符 而不是包含所有移位字符的整个字符串 这是我的代码 plainText