我对Python编程(以及一般编程)还比较陌生,我们被要求开发一个函数,通过重新排列文本来加密字符串。我们得到这个作为测试:
encrypt('THE PRICE OF FREEDOM IS ETERNAL VIGILENCE', 5)
'SI MODEERF FO ECIRP EHT ECNELIGIV LANRETE'
我们必须确保它适用于任何长度的弦。在被卡住之前我已经做到了:
##Define encrypt
def encrypt(text, encrypt_value):
##Split string into list
text_list = text.split()
##group text_list according to encrypt_value
split_list = [text_list[index:index+encrypt_value] for index in xrange\
(0, len(text_list), encrypt_value)]
如果我现在打印结果,这将给我:
encrypt("I got a jar of dirt and you don't HA", 3)
[['I', 'got', 'a'], ['jar', 'of', 'dirt'], ['and', 'you', "don't"], ['HA']]
所以我需要将列表中的每个列表组合成一个字符串(我认为是''连接(文本)?),用[::-1]反转它,然后将整个东西连接到一个字符串中。但我该怎么做呢?你知道吗
要组合元素,可以尝试使用reduce:
它将导致:
如果要删除多余的空格:
这个reduce-use可以很容易地修改,以便在组合每个子列表的元素之前将其反转:
或者在将所有子字符串连接在一起之前反转组合的子字符串:
这就是你想要的。。。你知道吗
您只需使用一些嵌套的列表理解就可以完成所需的工作。你知道吗
例如,你已经有了
你现在要做的是用列表理解倒转每个单词的三元组,例如:
然后反转每个子列表中的每个字符串
然后像你说的那样,把它们都连接起来
但是没有什么能说明你不能用一些嵌套同时做所有这些事情:
我个人更喜欢这种美学(事实上你不需要回到狭长空间),但我不确定它是否比Pablo的解决方案表现得更好。你知道吗
相关问题 更多 >
编程相关推荐