如何按指定重复次数模式打印字符串字符?以abcdef为例
解决字符串按6-5-4重复模式循环输出的问题
你的需求是:将字符串按每3个字符为一组,每组内的字符依次重复6次、5次、4次,循环这个模式处理所有字符。比如abcdef要输出a×6、b×5、c×4,接着d×6、e×5、f×4。
原代码的问题
你原来的代码只遍历了前3个字符(range(leng-3)等价于range(3)),没有处理后面的d、e、f;同时重复次数的逻辑没有复用6-5-4的模式到后续字符,导致无法完成完整需求。
正确实现方法
方法一:按分组处理(直观清晰)
把字符串按每3个字符拆分成小组,每个小组内按6-5-4的次数输出对应字符:
text = 'abcdef' # 定义每组的重复次数规则 repeat_times = [6, 5, 4] # 按每3个字符为一组遍历整个字符串 for start_idx in range(0, len(text), 3): # 截取当前组的字符(最后一组不足3个也能正常处理) current_group = text[start_idx:start_idx+3] # 遍历组内字符和对应的重复次数 for char, times in zip(current_group, repeat_times): print(char * times)
方法二:按字符位置计算重复次数(简洁通用)
直接通过字符的索引位置计算对应的重复次数,无需分组,适合任意长度的字符串:
text = 'abcdef' repeat_times = [6, 5, 4] for idx, char in enumerate(text): # 用索引对3取模,循环获取6-5-4的重复次数 print(char * repeat_times[idx % 3])
输出结果
两种方法都会输出:
aaaaaa bbbbb cccc dddddd eeeee ffff
内容的提问来源于stack exchange,提问作者Zhanylka
相关产品推荐
相关产品推荐

