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

Python实现字符串中字符'f'的首次及二次出现索引查询

问题分析与修复

问题需求

给定字符串按以下规则处理:

  • 无字符'f' → 输出-1
  • 仅一个'f' → 输出其索引
  • 两个及以上'f' → 输出前两次出现的索引

示例:输入"office",输出1 2

原代码的问题

你的代码存在几个关键错误:

  1. 方法调用错误:s.find('f')返回的是整数索引,没有count()方法,运行会直接抛出AttributeError。统计'f'的数量应该用s.count('f')。
  2. 条件判断错误:s.find('f') > 0会漏掉'f'在索引0的情况(此时find返回0,条件不成立,错误输出-1),正确判断应该是检查返回值不等于-1。
  3. 逻辑缺失:不管'f'出现多少次,都只打印了第一个索引,没有处理第二个索引的输出需求。

修复后的代码方案

方案一:收集所有'f'的索引再处理

这种方式直观清晰,适合需要处理更多索引的场景:

s = input().strip()
# 生成所有'f'的索引列表
f_indices = [idx for idx, char in enumerate(s) if char == 'f']

if not f_indices:
    print(-1)
elif len(f_indices) == 1:
    print(f_indices[0])
else:
    print(f_indices[0], f_indices[1])

方案二:用两次find定位

如果只需要前两个索引,用find的起始位置参数更高效:

s = input().strip()
first_pos = s.find('f')

if first_pos == -1:
    print(-1)
else:
    # 从第一个'f'的下一个位置开始找第二个
    second_pos = s.find('f', first_pos + 1)
    if second_pos == -1:
        print(first_pos)
    else:
        print(first_pos, second_pos)

两种方案都能满足需求,方案二更节省内存(不需要存储所有索引),方案一更灵活(后续要扩展处理更多索引时更方便)。

内容的提问来源于stack exchange,提问作者Albina Hakobyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:15:48