当前位置: 首页 > 面试题库 >

简短的rot13函数-Python

鲁永福
2023-03-14
问题内容

已关闭 。这个问题需要更加集中。它当前不接受答案。

想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。

4年前关闭。

改善这个问题

我正在Python中寻找一个简短而又酷的rot13函数;-)我编写了这个函数:

def rot13(s):
    chars = "abcdefghijklmnopqrstuvwxyz"
    trans = chars[13:]+chars[:13]
    rot_char = lambda c: trans[chars.find(c)] if chars.find(c)>-1 else c
    return ''.join( rot_char(c) for c in s )

谁能做得更好?例如,支持大写字符。


问题答案:

这是一个maketrans / translate解决方案

import string
rot13 = string.maketrans( 
    "ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz", 
    "NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm")
string.translate("Hello World!", rot13)
# 'Uryyb Jbeyq!'


 类似资料:
  • 到目前为止,您已经了解了反向密码和凯撒密码算法。 现在,让我们讨论ROT13算法及其实现。 ROT13算法的解释 ROT13密码是指缩写形式Rotate by 13 places 。 这是Caesar Cipher的特例,其中shift始终为13.每个字母移位13个位置以加密或解密消息。 例子 (Example) 下图以图形方式说明了ROT13算法流程 - 程序代码 ROT13算法的程序实现如下

  • 目录表 简介 定义函数 函数形参 使用函数形参 局部变量 使用局部变量 使用global语句 默认参数值 使用默认参数值 关键参数 使用关键参数 return语句 使用字面意义上的语句 DocStrings 使用DocStrings 概括 简介 函数是重用的程序段。它们允许你给一块语句一个名称,然后你可以在你的程序的任何地方使用这个名称任意多次地运行这个语句块。这被称为 调用 函数。我们已经使用了

  • 问题内容: 我试图使代码更具可读性,所以我决定使用一些简短的IF语句。 这是我的无效代码(“不是声明”): 这怎么了 需要括号吗?哪里? 问题答案: “三元表达式” 只能用于条件 赋值 。也就是说,您可以执行以下操作: 因为三元表达式返回的东西(在此示例中为类型)。 它并不是真的打算用作短的,在线的。特别是,如果各个部分不返回值或返回不兼容类型的值,则不能使用它。(因此,如果两个方法都碰巧返回相同

  • 问题内容: 我有以下代码片段。 以下摘要是否正确(仅针对上面的 简短示例)? 但是, 考虑到之前的摘要,为什么我确实需要转换第二个方法调用的参数? 问题答案: 这些是相关的JLS部分: [JLS 5.1.1身份 Conversion](http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.1) 任何类型

  • 这是一个很简短的教程,可以让你领略 Flux 和 Redux 思想的精髓。当你初次接触 Redux 时,Redux 官方文档极其详尽,是你的首选。本教程不同点是,通过介绍 Redux 使用来向你展示 Flux 概念。如果你想了解更多细节,请参谋 Redux 官方文档。

  • 问题内容: 根据现有的“最有用的C / C ++代码段”的精神-线程: 你们有(经常)使用的简短的,单功能的Python代码段,并想与StackOverlow社区共享吗?请保持条目较小(也许在25行之内?),并且每个帖子仅给出一个示例。 我将从不时使用一小段代码开始,以计数python项目中的sloc(代码的源代码行): 问题答案: 初始化二维列表 尽管可以安全地初始化列表: 相同的技巧不适用于2