Python Turtle绘图for循环首圈调用penup避免从原点画线问题求解
代码存在的核心问题
t增量更新的缩进错误:你把t += dt放在了for循环外部,导致200次循环过程中t的值始终没有变化,计算出的所有x1/y1都是同一个坐标点,自然无法绘制出连续线条,需要把这行代码缩进一层,放到for循环内部。
setpos调用缺失前缀:else分支里的setpos(x1, y1)没有加turtle.前缀,如果你没有做from turtle import *的全局导入,这行代码会直接报错,就算做了全局导入,和i==0分支的turtle.setpos写法不一致也容易埋下隐患。
- (非必要优化)
speed(10)不需要放在for循环里重复调用,放在循环外设置一次即可。
- (非必要优化)
修正后可运行的代码
import turtle from math import sin, e # 提前定义你用到的f1/p1/d1/f2/p2/d2等参数,以及t、dt的初始值 turtle.speed(10) t = 0 # 替换为你的t初始值 dt = 0.01 # 替换为你的dt参数值 for i in range(200): x1 = 200 * sin(f1 * t + p1) * e ** (-t * d1) + 200 * sin(f2 * t + p2) * e ** (-t * d2) y1 = 200 * sin(f3 * t + p3) * e ** (-t * d3) + 200 * sin(f4 * t + p4) * e ** (-t * d4) if i == 0: turtle.up() turtle.setpos(x1, y1) else: turtle.down() turtle.setpos(x1, y1) # t的增量更新放到循环内部 t += dt turtle.done()
内容的提问来源于stack exchange,提问作者dwburger
相关产品推荐
相关产品推荐

