如何用Python实现VB字符逐位截取重复循环的加密逻辑?
VB转Python:字符重复拼接实现
原VB代码逻辑
这段VB代码的核心逻辑很明确:
- 遍历输入字符串的每一个字符
- 把每个字符重复指定的
enkrip次,逐个拼接到结果字符串里
Python实现方案
方案1:完全对应VB的双层循环写法
Python字符串索引从0开始,但我们可以直接遍历字符串的每个字符,不用手动处理索引:
# 定义输入字符串和重复次数 kataenkripsi = "0011" enkrip = 4 hasilenkrip = "" # 外层循环遍历每个字符 for char in kataenkripsi: # 内层循环重复指定次数,拼接到结果 for _ in range(enkrip): hasilenkrip += char print(hasilenkrip) # 输出:0000000011111111
方案2:更简洁的Python写法
Python支持字符串直接乘数字实现重复,用生成器表达式可以省掉内层循环,代码更简洁:
kataenkripsi = "0011" enkrip = 4 hasilenkrip = ''.join(char * enkrip for char in kataenkripsi) print(hasilenkrip) # 输出同上
如果要实现你示例里的「连续相同字符组重复后加空格」效果(输入0011得到00000000 11111111),可以用itertools.groupby做分组处理:
from itertools import groupby kataenkripsi = "0011" enkrip = 4 # 按连续相同字符分组,每组重复后拼接 groups = [''.join(group) * enkrip for _, group in groupby(kataenkripsi)] hasilenkrip = ' '.join(groups) print(hasilenkrip) # 输出:00000000 11111111
关于切片(slice)的疑问
你提到的a[start:stop:step]是Python的切片语法,但在这个需求里完全不需要用到:
- 取单个字符直接用
字符串[索引]就行,比如取第一个字符是kataenkripsi[0] - 切片是用来截取一段子串的,比如
kataenkripsi[0:2]会拿到前两个字符"00",但这里我们只需要逐个处理单个字符,直接遍历字符串本身就足够简洁。
内容的提问来源于stack exchange,提问作者HelpMe
相关产品推荐
相关产品推荐

