Python 使用lambda使用rot13加密/解密?

Python 使用lambda使用rot13加密/解密?,python,function,python-3.x,encryption,lambda,Python,Function,Python 3.x,Encryption,Lambda,我需要使用lambda加密/解密,我遇到了一些问题。我的函数create_rot13()不能接收参数,只能接收lambda 到目前为止,这是我当前的代码,没有使用任何lambda,因为我找不到(经过几天的查找)。如何将这么多行代码放入其中 def create_rot13(message): crypted = "" letters = "abcdefghijklmnopqrstuvwxyz" for car in message: if car in

我需要使用
lambda
加密/解密,我遇到了一些问题。我的函数
create_rot13()
不能接收参数,只能接收lambda

到目前为止,这是我当前的代码,没有使用任何
lambda
,因为我找不到(经过几天的查找)。如何将这么多行代码放入其中

def create_rot13(message):
    crypted = ""
    letters = "abcdefghijklmnopqrstuvwxyz"

    for car in message:
        if car in letters:
            num = letters.find(car)
            num = num + 13
            if num >= len(letters):
                num = num - len(letters)
            crypted = crypted + letters[num]
    else:
        crypted = crypted + car

    crypted = crypted[:-1]
    return crypted

print(create_rot13("jbeyq"))
print(create_rot13("world"))
有没有人能帮我找到解决问题的方法

它看起来应该是这样的,除了这个1只改变了一个数字:

def create_rot13():
 my_fonction = lambda x : x + 13
 return my_fonction

coding = create_rot13()
print(coding(4))

如果要使用lambda执行此操作,则需要使用lambda捕获
字母
变量,并使用
映射
。你想要这样的东西:

def encode_rot13(message):
    offset = ord('a')
    result = map(lambda c: chr((ord(c) + 13 - offset) % 26 + offset), message)
    return "".join(result)

我使用
chr
ord
,所以我们不需要在一个字符串中保留所有字母。这里的想法是,我们得到一个整数,它表示任何给定字符的码点,因此我们可以做一些数学运算,而不是使用
find
,如果您想使用lambda进行计算,那么您需要使用lambda捕获
字母
变量,并使用
映射
。你想要这样的东西:

def encode_rot13(message):
    offset = ord('a')
    result = map(lambda c: chr((ord(c) + 13 - offset) % 26 + offset), message)
    return "".join(result)
我使用
chr
ord
,所以我们不需要在一个字符串中保留所有字母。这里的想法是,我们得到一个整数,它表示任何给定字符的码点,因此我们可以做一些数学运算,而不是使用
find

这里有一个简单的(ab)使用(和lambda)。请注意,这里需要的是编解码器模块,而不是在执行文本->文本编码时对
.encode('rot13')
的普通调用

import codecs
rot13 = lambda s: codecs.encode(s, 'rot13')
下面是一些示例用法:

>>> rot13('foo')
'sbb'
这里有一个简单的(ab)使用(和lambda)。请注意,这里需要的是编解码器模块,而不是在执行文本->文本编码时对
.encode('rot13')
的普通调用

import codecs
rot13 = lambda s: codecs.encode(s, 'rot13')
下面是一些示例用法:

>>> rot13('foo')
'sbb'

为什么你需要一个兰姆达来做这个?Python的lambda只有在您将函数作为参数传递给其他函数时才真正有用(否则您可以只使用嵌套的
def
)。还不清楚为什么需要编写函数工厂。如果工厂每次返回的函数都不一样的话,这是有道理的,但是ROT13就是ROT13。这是为了家庭作业,这是我们强制做的哈哈,否则我肯定会用另一种方式做。。这就是为什么我要求小费来找出一个解决方案,而不是完整的解决方案哈哈。我还将此代码(经过一些修改)用于其他加密方法为什么需要lambda?Python的lambda只有在您将函数作为参数传递给其他函数时才真正有用(否则您可以只使用嵌套的
def
)。还不清楚为什么需要编写函数工厂。如果工厂每次返回的函数都不一样的话,这是有道理的,但是ROT13就是ROT13。这是为了家庭作业,这是我们强制做的哈哈,否则我肯定会用另一种方式做。。这就是为什么我要求小费来找出一个解决方案,而不是完整的解决方案哈哈。我还将此代码(经过一些修改)用于其他加密方法