P语言解密Python代码修复:解决双元音、句首元音及索引越界问题
解决思路
P语言的加密规则是将连续元音组合(视为单个元音单元V)替换为VpV结构,解密核心就是全局匹配所有VpV模式,将其替换回原元音单元V即可,使用正则表达式可以高效覆盖所有场景,避免手动遍历索引的各类问题。
首先定义元音匹配规则:连续的1个及以上大小写英文字母a/e/i/o/u视为元音单元V,匹配VpV结构后直接替换为V。
修复后代码
import re # 匹配规则:分组1为连续元音序列,后面接p再接和分组1完全相同的元音序列 pattern = re.compile(r'([aeiouAEIOU]+)p\1') encrypted = input() decrypted = pattern.sub(r'\1', encrypted) print(decrypted)
问题验证
- 双元音场景适配:输入
boapoat会匹配到(oa)p\1,替换后得到boat;输入scoporpiopion会依次匹配(o)p\1、(i)p\1、(o)p\1,替换后得到scorpion,完全符合要求。 - 句首元音解密:输入加密后的
Apa会匹配到(A)p\1,替换后得到A,解决句首元音无法解密的问题。 - 索引越界修复:无需手动遍历字符串索引,无论输入是否以
.结尾都不会出现越界报错,也不需要额外加终止判断逻辑。
内容的提问来源于stack exchange,提问作者Monkey D. Ruffy
相关产品推荐
相关产品推荐

