Python:如何反转字符串的多个切片操作
发布时间:2020-12-20 11:05:24 所属栏目:Python 来源:网络整理
导读:我正在研究一个有趣的 Python编码问题: 从字符串中获取每个第二个字符,然后是不是每个第二个字符的其他字符,并将它们作为新字符串连接起来. 这样做n次! 例如: “这是一个测试
我正在研究一个有趣的
Python编码问题:
从字符串中获取每个第二个字符,然后是不是每个第二个字符的其他字符,并将它们作为新字符串连接起来. 例如: “这是一个测试!”,1 – > “hsi etTi坐着!” 我写的函数是: def encrypt(text,n): if n <= 0: return text else: a = encrypt(text,n-1)[1::2] b = encrypt(text,n-1)[::2] return a+b 这似乎有效,由测试功能的结果显示.但现在我不知道如何扭转这一行动.例如,用(“hsi etTi sats!”,1)作为输入,我该如何操作它以便它可以恢复为“这是一个测试!”?我知道如何把列表中的每个其他角色都拿走,但是你怎么把它们放回去.我还处于学习Python的早期阶段,所以我想这是因为我对基础知识的了解. String = "ABCDEF" a= String[1::2] = "BDF" b= String[::2] ="ACE" 你如何操纵a和b以便可以恢复字符串?我不确定自己是否澄清过. 感谢您提前的时间. 解决方法
其他一些答案缺少您完整问题的两个重要方面
>当字符数为奇数时会发生什么?如果您压缩或映射不等长度的序列,则最后一个字符将丢失. 所以这是你的解密功能: def encrypt(text,n-1)[::2] return a+b def decrypt(text,n): if n <= 0: return text else: a,b = text[:len(text)//2],text[len(text)//2:] text = "".join(map(lambda x,y: x + y,b,a)) text = decrypt(text,n-1) if len(b) > len(a): # happens for odd number of characters. We need to append last from b text += b[-1] return text s = "This is a test!" print("n=1: {0}".format(decrypt(encrypt(s,1),1))) print("n=2: {0}".format(decrypt(encrypt(s,2),2))) print("n=3: {0}".format(decrypt(encrypt(s,3),3))) >>> n=1: This is a test! >>> n=2: This is a test! >>> n=3: This is a test! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |