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。这是为了家庭作业,这是我们强制做的哈哈,否则我肯定会用另一种方式做。。这就是为什么我要求小费来找出一个解决方案,而不是完整的解决方案哈哈。我还将此代码(经过一些修改)用于其他加密方法