Найти - Пользователи
Полная версия: Задачка на построение стены
Начало » Центр помощи » Задачка на построение стены
1
Zeronium
В общем такая задачка:

# -*- 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 должно быть двойным, но не получается. Где я напартачил?
FishHook
Zeronium
Мне подсказывали, что условие if должно быть двойным
Неужели вы думаете, что фразы подобные этой хоть как-то приближают читающих ваш пост к пониманию того, что вы написали?
Zeronium
Вообще-то я обратился за помощью к к тем, кто реально может помочь. А желающие поумничать могут следовать мимо.
FishHook
Zeronium
Вообще-то я обратился за помощью к к тем

Так тебе бы и помогли, может быть даже я бы и помог, только как тебе помочь, когда тебя понять невозможно? Задача сформулирована наредкость бестолково. “Нарисовать стену из кирпичей. Размер кирпича - 100х50”. Ты считаешь, что этого достаточно? Сколько должно быть кирпичей, какой размер стены, каково взаимное расположение кирпичей, как должны быть ориентированы кирпичи, какую графическую библиотеку надо применять и так далее. То что ты написал, это не постановка задачи, это белиберда.
Что такое “двойной иф”? Как это понять?
Ты либо внятно, понятно, технически грамотным языком описываешь свои проблемы, либо твоё “обращение за помошью” будет удалено. Код, кстати, нужно оформлять в тегах кода.
Zeronium
Эта “белиберда” и есть условие задачи, и не я его придумал.

Библиотека указана в коде: import simple_draw as sd
Размер стены: sd.resolution = (1500, 800)
Кирпичи сориентированы, как в обычной кирпичной кладке: по оси х - 100, по оси у - 50. Каждый чётный (можно наоборот - нечётный) ряд по оси у смещается на 0,5 кирпича.
Zeronium
Сам код в первом сообщении получился без отступов. На скрине код с отступами ,как я его писал в pycharm.
FishHook
держи

   
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)
VadimK
Вроде как август, время каникул. Откуда народ прет с такими ученическими задачами ?
FishHook
Судя по идиотской формулировке задания, где-то открылись очередные курсы юных хакеров
StUdeHt
Простое и элегантное решение на том этапе на котором находятся пользователи данного курса.
 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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB