Форум сайта python.su
В общем такая задачка:
# -*- coding: utf-8 -*-
# (цикл for)
# Нарисовать стену из кирпичей. Размер кирпича - 100х50
# Использовать вложенные циклы for
# А это мой код:
import simple_draw as sd
sd.resolution = (1500, 800)
left_bottom = sd.get_point(0, 0)
right_top = sd.get_point(100, 50)
color = sd.COLOR_YELLOW
width = 1
step_x = 100
step_y = 50
sd.rectangle(left_bottom=left_bottom, right_top=right_top, color=color, width=width)
for y in range(0, 600, 50):
if right_top.y / 50 % 2 == 0:
for x in range(0, 500, 100):
left_bottom = sd.get_point(left_bottom.x + step_x, left_bottom.y)
right_top = sd.get_point(right_top.x + step_x, right_top.y)
sd.rectangle(left_bottom=left_bottom, right_top=right_top, color=color, width=width)
else:
for x in range(0, 500, 100):
left_bottom = sd.get_point(left_bottom.x, left_bottom.y + step_y)
right_top = sd.get_point(right_top.x, right_top.y + step_y)
sd.rectangle(left_bottom=left_bottom, right_top=right_top, color=color, width=width)
# На выходе получается ерунда. Мне подсказывали, что условие if должно быть двойным, но не получается. Где я напартачил?
Отредактировано Zeronium (Авг. 13, 2020 12:12:44)
Офлайн
ZeroniumНеужели вы думаете, что фразы подобные этой хоть как-то приближают читающих ваш пост к пониманию того, что вы написали?
Мне подсказывали, что условие if должно быть двойным
Офлайн
Вообще-то я обратился за помощью к к тем, кто реально может помочь. А желающие поумничать могут следовать мимо.
Офлайн
Zeronium
Вообще-то я обратился за помощью к к тем
Офлайн
Эта “белиберда” и есть условие задачи, и не я его придумал.
Библиотека указана в коде: import simple_draw as sd
Размер стены: sd.resolution = (1500, 800)
Кирпичи сориентированы, как в обычной кирпичной кладке: по оси х - 100, по оси у - 50. Каждый чётный (можно наоборот - нечётный) ряд по оси у смещается на 0,5 кирпича.
Офлайн
Сам код в первом сообщении получился без отступов. На скрине код с отступами ,как я его писал в pycharm.
Прикреплённый файлы:
000.png (23,0 KБ)
Офлайн
держи
import itertools import simple_draw as sd FIELD_HEIGHT = 800 FIELD_WIDTH = 1500 sd.resolution = (FIELD_WIDTH, FIELD_HEIGHT) BRICk_HEIGHT = 50 BRICK_WIDTH = 100 LINE_COLOR = sd.COLOR_YELLOW LINE_WIDTH = 1 def draw_brick(x, y): left_bottom = sd.get_point(x, y) right_top = sd.get_point(x + BRICK_WIDTH, y + BRICk_HEIGHT) sd.rectangle(left_bottom=left_bottom, right_top=right_top, color=LINE_COLOR, width=LINE_WIDTH) rows = FIELD_HEIGHT / BRICk_HEIGHT bricks_in_row = FIELD_WIDTH / BRICK_WIDTH offset = itertools.cycle([0, BRICK_WIDTH / 2]) for r in range(rows): y = r * BRICk_HEIGHT shift = next(offset) for i in range(bricks_in_row): x = i * BRICK_WIDTH + shift draw_brick(x, y)
Отредактировано FishHook (Авг. 13, 2020 19:32:56)
Офлайн
Вроде как август, время каникул. Откуда народ прет с такими ученическими задачами ?
Офлайн
Судя по идиотской формулировке задания, где-то открылись очередные курсы юных хакеров
Офлайн
Простое и элегантное решение на том этапе на котором находятся пользователи данного курса.
import simple_draw as sd left_bottom_x, left_bottom_x, = 0, 0 right_top_x, right_top_y = 0, 0 step_x, step_y = 100, 50 for i in range(12): left_bottom_x = i * step_x right_top_x = step_x + i * step_x left_bottom_y = i * step_y right_top_y = i * step_y + step_y if i % 2 == 0: for j in range(7): left_bottom_x = j * step_x - step_x / 2 right_top_x = j * step_x + step_x / 2 sd.rectangle(left_bottom=sd.get_point(left_bottom_x, left_bottom_y), right_top=sd.get_point(right_top_x, right_top_y), color=sd.COLOR_YELLOW, width=1) else: for r in range(7): left_bottom_x = r * step_x right_top_x = step_x + r * step_x sd.rectangle(left_bottom=sd.get_point(left_bottom_x, left_bottom_y), right_top=sd.get_point(right_top_x, right_top_y), color=sd.COLOR_YELLOW, width=1) sd.pause()
Отредактировано StUdeHt (Авг. 21, 2021 13:03:46)
Офлайн