Объединить циклы и вынести за if
import simple_draw as sd
# Нарисовать стену из кирпичей. Размер кирпича - 100х50
# Использовать вложенные циклы for
width = 100
height = 50
y = 0
y1 = height
for i in range(12):
start_point = sd.get_point(0, y)
end_point = sd.get_point(600, y)
sd.line(start_point, end_point, sd.COLOR_ORANGE, width=3)
if i % 2 == 0:
x1 = 0
x2 = 0
# TODO вот эти циклы можно было бы объединить в один, вынеся его за if
for _ in range(7):
start_point = sd.get_point(x1, y)
end_point = sd.get_point(x2, y + y1)
sd.line(start_point, end_point, sd.COLOR_ORANGE, width=3)
x1 += width
x2 += width
else:
x1 = width/2
x2 = width/2
for _ in range(6):
start_point = sd.get_point(x1, y)
end_point = sd.get_point(x2, y + y1)
sd.line(start_point, end_point, sd.COLOR_ORANGE, width=3)
x1 += width
x2 += width
y += height
Код рабочий, все отлично. Пытаюсь вынести в один, x1 и x2 не определяется тогда
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
if i % 2 == 0:
x1 = 0
x2 = 0
else:
x1 = width/2
x2 = width/2
for _ in range(7):
start_point = sd.get_point(x1, y)
end_point = sd.get_point(x2, y + y1)
sd.line(start_point, end_point, sd.COLOR_ORANGE, width=3)
x1 += width
x2 += width
y += height
В вашем коде для разных веток if разное количество итераций (6 и 7) - я сделал одинаково, чтобы упросить код (на результат визуально не повлияет, просто некоторые вертикальные палки будут рисоваться за границами окна).