如何在一行打印不同循环的输出并空格分隔?代码输出不符预期求助
解决单行打印循环输出并添加空格分隔的问题
我来帮你搞定这个问题!你的核心需求应该是对每个输入的单词,把偶数索引位置的字符和奇数索引位置的字符分成两组,用空格隔开后打印在同一行对吧?现在你的代码之所以输出cdoe而不是预期的cd oe,主要有两个小问题:
问题分析
- 没有遍历所有输入的单词:你把输入的单词都存在了
words列表里,但后续的循环只处理了最后一个输入的word,如果输入多个单词的话,前面的都会被忽略; - 两组字符之间缺少空格分隔:你直接逐个打印偶数位和奇数位的字符,没有在两组之间插入空格,导致结果连在了一起。
修正后的代码方案
这里提供两种清晰的实现方式,你可以根据习惯选择:
方式1:用列表推导式快速拼接字符
这种方式代码更简洁,适合熟悉列表操作的场景:
number = int(input()) words = [] # 输入指定数量的单词 for _ in range(number): word = input().strip() # strip()避免输入时不小心带的多余空格 words.append(word) # 处理每个单词 for word in words: # 收集偶数索引(0、2、4...)的字符,拼接成字符串 even_chars = ''.join([word[i] for i in range(0, len(word), 2)]) # 收集奇数索引(1、3、5...)的字符,拼接成字符串 odd_chars = ''.join([word[t] for t in range(1, len(word), 2)]) # 用空格拼接两组字符并打印 print(f"{even_chars} {odd_chars}")
方式2:用enumerate遍历索引和字符(更直观)
这种方式逻辑更清晰,适合刚上手Python的朋友理解:
number = int(input()) words = [] for _ in range(number): word = input().strip() words.append(word) for word in words: even_part = "" odd_part = "" # 同时获取字符的索引和内容 for idx, char in enumerate(word): if idx % 2 == 0: even_part += char # 偶数索引的字符加到even_part else: odd_part += char # 奇数索引的字符加到odd_part print(f"{even_part} {odd_part}")
测试效果
当你输入1,然后输入单词code时,两种方案都会输出:
cd oe
完全符合你的预期~如果需要把所有单词的结果打印在同一行(而不是每个单词一行),只需要把print语句改成print(f"{even_chars} {odd_chars}", end=" ")即可。
内容的提问来源于stack exchange,提问作者Adam Grey




