Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 13, 2020 12:08:24

Zeronium
Зарегистрирован: 2020-08-13
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на построение стены

В общем такая задачка:

# -*- 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)

Офлайн

#2 Авг. 13, 2020 12:18:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Задачка на построение стены

Zeronium
Мне подсказывали, что условие if должно быть двойным
Неужели вы думаете, что фразы подобные этой хоть как-то приближают читающих ваш пост к пониманию того, что вы написали?



Офлайн

#3 Авг. 13, 2020 14:53:49

Zeronium
Зарегистрирован: 2020-08-13
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на построение стены

Вообще-то я обратился за помощью к к тем, кто реально может помочь. А желающие поумничать могут следовать мимо.

Офлайн

#4 Авг. 13, 2020 17:09:38

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Задачка на построение стены

Zeronium
Вообще-то я обратился за помощью к к тем

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



Офлайн

#5 Авг. 13, 2020 18:08:44

Zeronium
Зарегистрирован: 2020-08-13
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на построение стены

Эта “белиберда” и есть условие задачи, и не я его придумал.

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

Офлайн

#6 Авг. 13, 2020 18:18:09

Zeronium
Зарегистрирован: 2020-08-13
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на построение стены

Сам код в первом сообщении получился без отступов. На скрине код с отступами ,как я его писал в pycharm.

Прикреплённый файлы:
attachment 000.png (23,0 KБ)

Офлайн

#7 Авг. 13, 2020 19:32:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Задачка на построение стены

держи

   
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)

Офлайн

#8 Авг. 13, 2020 20:36:44

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Задачка на построение стены

Вроде как август, время каникул. Откуда народ прет с такими ученическими задачами ?

Офлайн

#9 Авг. 14, 2020 10:01:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Задачка на построение стены

Судя по идиотской формулировке задания, где-то открылись очередные курсы юных хакеров



Офлайн

#10 Авг. 21, 2021 13:02:33

StUdeHt
Зарегистрирован: 2021-08-21
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на построение стены

Простое и элегантное решение на том этапе на котором находятся пользователи данного курса.

 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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version