You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python打印字符串偶数索引字符的代码运行异常排查咨询

嘿,我来帮你搞定这个问题!先看看你的代码为啥会输出不符合预期的结果:

问题根源分析

你写的代码里,string.index(i)这个方法的行为和你想的不一样——它只会返回字符i在字符串中第一次出现的索引。举个例子,当输入hello时:

  • 第一个l的索引是2,满足2%2==0,会被打印;
  • 第二个l调用index()返回的还是2(因为它找的是第一个匹配的位置),所以也会被判定为符合条件,导致多打印了一个l;
  • 最后o的索引是4,同样满足条件,所以最终输出了h l l o,和预期不符。
正确的实现方式

这里给你三种靠谱的实现方法,按需选择:

方法1:用enumerate()遍历(最直观)

enumerate()可以同时拿到每个字符的索引和字符本身,完美解决索引判断的问题:

string = input("Please enter your input: ")
for idx, char in enumerate(string):
    if idx % 2 == 0:
        print(char)

输入hello的话,会输出h、l、o,完全符合预期。

方法2:直接遍历偶数索引

如果不想用enumerate(),也可以直接生成所有偶数索引,然后逐个取字符:

string = input("Please enter your input: ")
for idx in range(0, len(string), 2):
    print(string[idx])

range(0, len(string), 2)会生成0、2、4...这样的偶数索引,直接对应你要的位置。

方法3:字符串切片(一行搞定)

Python的切片语法超好用,[::2]表示从字符串开头到结尾,每隔一个字符取一个(也就是取偶数索引的字符):

string = input("Please enter your input: ")
print('\n'.join(string[::2]))

用'\n'.join()把切片得到的字符串拆成每行一个字符,和循环打印的效果完全一样。

内容的提问来源于stack exchange,提问作者Sudipta Mohanty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:09:05