You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在一行打印不同循环的输出并空格分隔?代码输出不符预期求助

解决单行打印循环输出并添加空格分隔的问题

我来帮你搞定这个问题!你的核心需求应该是对每个输入的单词,把偶数索引位置的字符奇数索引位置的字符分成两组,用空格隔开后打印在同一行对吧?现在你的代码之所以输出cdoe而不是预期的cd oe,主要有两个小问题:


问题分析

  1. 没有遍历所有输入的单词:你把输入的单词都存在了words列表里,但后续的循环只处理了最后一个输入的word,如果输入多个单词的话,前面的都会被忽略;
  2. 两组字符之间缺少空格分隔:你直接逐个打印偶数位和奇数位的字符,没有在两组之间插入空格,导致结果连在了一起。

修正后的代码方案

这里提供两种清晰的实现方式,你可以根据习惯选择:

方式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

火山引擎 最新活动