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

Python中自定义循环input()时如何解决字符串索引越界问题?

解决Python循环输入中的索引越界问题

嗨,咱们来搞定这两个索引越界的小问题,本质上都是因为没先检查字符串长度就直接访问索引导致的,我给你两种靠谱的处理思路:

第一个问题:空输入导致line[0]越界

你原来的代码在用户输入空字符串时,line[0]会直接报错——毕竟空字符串根本没有第0个字符嘛。这里有两种简单的修复方式:

方式1:先检查字符串非空再判断索引

先确认输入的字符串不是空的,再去判断第一个字符是不是#:

while True:
    line = input("> ")
    # 先判断line不为空,再检查第一个字符
    if line and line[0] == "#":
        continue
    if line == "done":
        break
    print(line)
print('Done!')

这里line作为布尔值判断时,空字符串会被视为False,所以只有非空的情况下才会去执行后面的索引判断。

方式2:用startswith()方法更简洁

Python的字符串内置了startswith()方法,它会自动处理空字符串的情况(空字符串调用这个方法会返回False),代码更简洁易读:

while True:
    line = input("> ")
    if line.startswith("#"):
        continue
    if line == "done":
        break
    print(line)
print('Done!')

第二个问题:判断line[1]时的索引越界

当你想判断输入是否是" #"(空格加#)时,直接访问line[1]会在输入空字符串、或者只有1个字符的字符串时报错。同样,我们有两种处理方式:

方式1:先检查字符串长度足够再判断索引

先确保字符串长度至少为2,再去访问第二个字符:

while True:
    line = input("> ")
    # 先判断长度≥2,再检查第二个字符是#
    if len(line) >= 2 and line[1] == "#":
        continue
    if line == "done":
        break
    print(line)
print('Done!')

这样就避免了长度不足时访问索引的问题。

方式2:还是用startswith()更省心

直接用startswith(" #")来判断字符串是否以空格加#开头,它会自动处理所有长度不够的情况:

while True:
    line = input("> ")
    if line.startswith(" #"):
        continue
    if line == "done":
        break
    print(line)
print('Done!')

这种方式代码更直观,别人一看就知道你要判断的是开头的空格加#,而且不用手动处理长度判断,减少出错概率。

总的来说,处理字符串开头匹配的场景,优先用startswith()这类内置方法,既简洁又能避免边界错误;如果必须访问索引,一定要先检查字符串的长度是否足够哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:29:04