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

Python turtle绘图报TypeError: Start must be an integer错误

错误诱发原因

Python 3 中使用单斜杠/执行除法运算时,无论参与运算的数值是否为整数,返回结果均为浮点数类型。而内置range()函数要求传入的循环边界参数必须是整数,传入浮点数时就会抛出TypeError: Start must be an integer错误。

代码中两处循环参数的写法均触发了这个问题:

  • 奇数判断分支中使用range((line+1)/2)
  • 偶数判断分支中使用range(line/2)

即使line是整数,上述两个除法表达式的计算结果也是浮点数,例如输入line=3时,(3+1)/2的返回值是2.0而非整数2,不符合range()的参数要求,直接触发报错。

修复方法

将两处除法的单斜杠/替换为整数除法运算符//即可。//会在除法运算后返回向下取整的整数结果,完全匹配预设的计算逻辑:

  • 奇数场景:(line+1)//2,例如line=3时计算结果为整数2,满足“奇数加1后除以2”的逻辑
  • 偶数场景:line//2,例如line=4时计算结果为整数2,满足“偶数直接除以2”的逻辑

修复后的核心循环代码如下:

if line % 2 != 0:
    for i in range((line+1)//2):  
        for _ in range(linenum):
            draw(edge,line)
            rt(135); fd(sqrt(edge**2*2)); rt(45)
        pu(); bk(edge*(linenum+1)); rt(90); fd(edge*2); lt(90); pd()
        linenum += 2
else:
    for i in range(line//2):  
        for _ in range(linenum):
            draw(edge,line)
            rt(135); fd(sqrt(edge**2*2)); rt(45)
        pu(); bk(edge*(linenum+1)); rt(90); fd(edge*2); lt(90); pd()
        linenum += 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:30:52