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

使用索引分割字符串出错,求turtle多行文本实现正确代码

修复Turtle字符串分段绘制的索引错误

问题根源

你代码里的question.index(i)是错误核心——这个方法返回的是字符首次出现的索引,而非当前循环中字符的实际位置。比如测试字符串里的重复数字(如'1'),不管循环到第几个'1',index()都会返回它第一次出现的位置(0),导致后续字符的归类逻辑完全失效。

解决方案

有两种可靠的实现方式,推荐第二种(字符串切片),简洁高效:

方法1:用enumerate获取真实索引

遍历字符串时同时拿到索引和字符,确保判断的是当前字符的实际位置:

prilin = ''
seglin = ''
question = q[0]  # 假设q是存储目标字符串的列表

for idx, char in enumerate(question):
    if idx >= 30:  # 索引从0开始,第30位及以后的字符归入第二行
        seglin += char
    else:
        prilin += char

# Turtle绘制逻辑不变
t.write(prilin, False, 'left', ('Arial', 12, 'normal'))
t.rt(180)
t.fd(25)
t.write(seglin, False, 'left', ('Arial', 12, 'normal'))

方法2:直接用字符串切片(推荐)

Python字符串支持切片操作,一行代码就能完成分段,无需循环:

question = q[0]
# 取前30个字符(索引0-29)
prilin = question[:30]
# 取第30位及以后的所有字符(索引30到结尾)
seglin = question[30:]

# Turtle绘制逻辑不变
t.write(prilin, False, 'left', ('Arial', 12, 'normal'))
t.rt(180)
t.fd(25)
t.write(seglin, False, 'left', ('Arial', 12, 'normal'))

说明

切片操作question[:30]遵循Python左闭右开规则,正好截取前30个字符;question[30:]自动截取从第30位到字符串末尾的所有内容,完全符合需求,代码更简洁且性能更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:45:42