Python循环问题:如何按每16个字符打印以分号结尾的字符串?
解决按16字符分组打印字符串的问题
看起来你的代码逻辑和数据结构没匹配上,才导致输出格式完全不符合预期。咱们一步步来修正:
问题分析
你的当前代码:
i = 0 for word in SIGNS: print(word[:i], end='') i += 16
这里有两个核心问题:
- 遍历对象不对:如果
SIGNS是单个字符的序列(比如每个元素是一个字符),那循环里的word就是单个字符,word[:i]要么是空(i=0时),要么就是这个字符本身(i≥1时),完全没法实现按16字符分组的需求。 - 逻辑方向错误:你需要的是把完整字符串按16字符切片输出,而不是逐个字符去截取前i个内容。
另外你提到输出字符间有空格,大概率是SIGNS里本身包含空格字符,或者被拆成了带空格的元素,这也需要先处理干净。
解决方案
步骤1:先得到干净的目标字符串
如果SIGNS是混有空格的字符列表,先拼接并清理多余空格:
# 拼接成完整字符串,同时过滤掉空格 target_str = ''.join([c for c in SIGNS if c.strip()])
如果SIGNS本身就是无空格的完整字符串,直接使用它即可。
步骤2:按16字符分组打印
用循环切片的方式,每次截取16个字符的片段输出:
chunk_size = 16 # 从0开始,每次跳16个位置,遍历整个字符串 for start in range(0, len(target_str), chunk_size): # 截取从start到start+16的片段,超出字符串长度时自动取到末尾 chunk = target_str[start:start+chunk_size] print(chunk)
示例验证
假设SIGNS是带空格的字符列表:
SIGNS = ['A', 'R', 'I', ':', ' ', '0', '3', ',', ' ', '2', '1', '-', '0', '4', ',', '1', '9', ';']
经过第一步处理后得到target_str = 'ARI:03,21-04,19;',第二步分组打印时,因为长度刚好16,就会输出你期望的:ARI:03,21-04,19;
如果字符串更长(比如30个字符),代码会自动分成两组:前16个字符为一组,剩余14个为另一组,分别打印。
内容的提问来源于stack exchange,提问作者Daniel Lynes
相关产品推荐
相关产品推荐

