Mail.ruПочтаМой МирОдноклассникиИгрыЗнакомстваНовостиПоискСмотриComboВсе проекты

Python как правильно записать цикл

seva Знаток (344), на голосовании 4 недели назад
Не получается правильно сделать цикл для копирования прямоугольника .
Нужно чтобы он вначале копировался вверх (это получается, копирует вверх по игрекам 10 раз через интервалы shift=2000) а затем получившаяся пачка отрезков копировалась вправо несколько раз (в моём примере 11 раз вправо по иксам)

iRectangleParam = kompas6_api5_module.ksRectangleParam(kompas_object.GetParamStruct(kompas6_constants.ko_RectangleParam))
iRectangleParam.Init()
iRectangleParam.x = x14
iRectangleParam.y = y14
iRectangleParam.ang = 0
iRectangleParam.height = x24
iRectangleParam.width = y24
iRectangleParam.style = style14
obj = iDocument2D.ksRectangle(iRectangleParam)

i=0
j=0
shift=2000
while j<11:
x14=x14+shift
while i<10:
y14=y14+shift
iRectangleParam = kompas6_api5_module.ksRectangleParam(kompas_object.GetParamStruct(kompas6_constants.ko_RectangleParam))
iRectangleParam.Init()
iRectangleParam.x = x14
iRectangleParam.y = y14
iRectangleParam.ang = 0
iRectangleParam.height = x24
iRectangleParam.width = y24
iRectangleParam.style = style14
obj = iDocument2D.ksRectangle(iRectangleParam)
i=i+1
j=j+1

(если упрощенно то мне нужен такой цикл чтобы копировал точку вверх допустим 10 раз, а затем эту пачку полученых точек он копировал вправо 10 раз)
Голосование за лучший ответ
port port Искусственный Интеллект (165702) 1 месяц назад
Чтобы копировать программно созданные точки - нужно хранить о них информацию, например, в списке, кортеже, да хоть в файле... После окончания цикла генерации "вверх" и заполнения списка всех полученных координат - пробежаться циклом по этому списку координат и каждое значение из списка скопировать "вправо" нужное количество раз...
sevaЗнаток (344) 1 месяц назад
а не создавая списка нельзя так копировать точку?
port port Искусственный Интеллект (165702) seva, Можно и не создавая списка... Для этого ты должен организовать цикл построения по вертикали таким образом, чтобы в нем был вложенный цикл построения и по горизонтали. Я вижу у тебя какие-то циклы while, но это явно толком не работает. Проще всего создать функцию рисования, например def draw(x,y): бла-бла-бла и вызывать ее из каждого цикла, передавая координаты x,y
sevaЗнаток (344) 1 месяц назад
я заменил цикл вайл на фор и вот что получилось на картинке (как теперь сделать чтобы оно не уходила так вверх по диагонали)

sevaЗнаток (344) 1 месяц назад
вот часть кода
seva, последнюю строчку убери
port portИскусственный Интеллект (165702) 1 месяц назад
Я бы для начала не поленился придумать РАЗНЫЕ имена для списков!!!
Например, listX и listY...

А так ты пользуешься по сути одним и тем же списком - вот тебя и "треугольник"...
seva Знаток (344) port port, сделал разные имена, всё равно чертит также
port portИскусственный Интеллект (165702) 1 месяц назад
Ну, так отладь эти циклы... Давай, напрягись! Я в молодости сутками сидел над 10 строчками кода, если что-то не клеилось... :)
Похожие вопросы
Также спрашивают