penup() первый раз в цикле for

#python #loops #python-turtle

Вопрос:

Я пытаюсь заставить графику черепахи Python построить серию вычислений x и y значений на основе приведенных ниже формул. Все вычисления работают, но я хочу, чтобы перо опускалось только с первой вычисленной (x, y) точки, а не с начала координат. Моя идея состояла в том, чтобы проверить, когда i = 0 (в первый раз через for цикл) и поднять перо, прежде чем перейти к первой вычисленной (x, y) точке. После этого, когда i значение больше 0, перо будет опущено, и линия будет проведена к следующей вычисленной (x, y) точке. Я уверен, что в моем коде есть простое исправление, но я не могу его обнаружить. Может быть, кто-то (все???) можете указать мне на ошибку(ы)??? Спасибо!

 penup()

for i in range(20000):
    speed(10)

    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)
    setpos(x1,y1)
    pendown()
 
    t  = dt
 

Комментарии:

1. Вы могли бы поставить turtle.up() перед петлей, затем внутри петли поставить setpos(x1, y1) , а затем turtle.down() .

2. Также довольно часто можно проверить переменную цикла, как вы это сделали. Или установите флаг «инициализировано» в значение False перед началом, затем внутри цикла проверьте эту переменную, выполните инициализацию, а затем установите значение True.

3. Большое спасибо за помощь. Я могу добавить penup() перед циклом, и я вижу, что черепаха движется, как и ожидалось (без нарисованных линий). Однако, когда я добавляю pendown() после setpos(x1,y1), код завершается ошибкой. Вот как это выглядит сейчас.

4. Ваш основной код выглядит в основном нормально, за исключением t = dt того, что, вероятно, вы должны быть в долгу за то, чтобы поместить его в цикл. Я не могу прочитать код, вставленный в ваш комментарий.

5. Я отредактировал свой исходный код, так как новый код в комментариях не работал. Я проверю местоположение t = dt