Форум сайта python.su
sdl5
Есть Задача №21: task_4_11.
move_right()
move_down()
for i in range(1, 13 + 1):
for _ in range(i):
fill_cell()
move_right()
for _ in range(i):
move_left()
move_down()
move_right()
move_down()
n = 0
while not wall_is_beneath():
n += 1
for _ in range(n):
fill_cell()
move_right()
for _ in range(n):
move_left()
move_down()
Отредактировано py.user.next (Авг. 1, 2019 01:30:37)
Офлайн
Добрый день. я так же смотрю лекции и прохожу практические задания. но столкнулся с Задача №24: task_2_1 (робот, задача с крестом). даже не знаю, как к ней подступится. прошу помощи или с помощью чего можно решить. премного благодарен за уделенное время
Офлайн
Lucker
прохожу практические задания. но столкнулся с Задача №24: task_2_1 (робот, задача с крестом). даже не знаю, как к ней подступится
def make_cross(): move_right() fill_cell() move_down() fill_cell() move_right() fill_cell() move_left() move_down() fill_cell() move_up() move_left() fill_cell() move_up() @task def task_2_1(): move_right() move_down() make_cross()
Офлайн
py.user.nextблагодарю, теперь понятно и с остальными
Офлайн
опять прошу помощи, Задача №27: task_7_5. Закрасить клетки с увеличивающимся интервалом. Расстояние до стены не известно. пока имею такой вид кода:
n=0
move_right()
while not wall_is_on_the_right():
fill_cell()
if cell_is_filled():
n+=1
move_right(n)
Но боюсь тут вообще нужно воспользоваться циклом “for”, совсем голову сломал…
и сразу еще вопрос, как сделать, чтобы отступы были видны в сообщении?
Отредактировано Lucker (Окт. 2, 2018 13:35:41)
Офлайн
Lucker
опять прошу помощи, Задача №27: task_7_5.
@task def task_7_5(): move_right() fill_cell() n = 0 nn = n while not wall_is_on_the_right(): if n < nn: n += 1 move_right() else: n = 0 nn += 1 move_right() if not wall_is_on_the_right(): fill_cell()
Lucker
как сделать, чтобы отступы были видны
[code python][/code]
Отредактировано py.user.next (Ноя. 10, 2019 23:36:01)
Офлайн
это снова я, извините за беспокойство. я совсем недавно (чуть больше недели) начал осваивать с нуля программирование. может задачки и простые, но что-то запнулся на последней из этой практики. Задача №32: task_8_18. Закрасить отмеченные клетки. В регистр ax записать количество клеток, которые были закрашены ещё до того, как робот начал двигаться. Количество и размеры коридоров не известны.
2 вариант: с таким кодом все проходится, но проблема с регистром AX. ума не приложу что с этим делать.
def up(): if cell_is_filled(): if not wall_is_above(): move_up() x+=1 else: fill_cell() if not wall_is_above(): move_up() if wall_is_above(): while not wall_is_beneath(): move_down() @task(delay=0.01) def task_8_18(): x=0 while not wall_is_on_the_right(): if wall_is_above() and wall_is_beneath(): fill_cell() move_right() else: move_up() up()
def up(): while not wall_is_above(): if cell_is_filled(): if not wall_is_above(): move_up() else: fill_cell() if not wall_is_above(): move_up() if wall_is_above(): if cell_is_filled(): move_down() else: fill_cell() while wall_is_on_the_left(): move_down() if not wall_is_on_the_right(): move_right() @task(delay=0.05) def task_8_18(): while not wall_is_on_the_right(): if wall_is_above() and wall_is_beneath(): fill_cell() move_right() else: move_up() up()
Отредактировано Lucker (Окт. 2, 2018 23:50:16)
Офлайн
Lucker
но что-то запнулся на последней из этой практики. Задача №32: task_8_18. Закрасить отмеченные клетки. В регистр ax записать количество клеток, которые были закрашены ещё до того, как робот начал двигаться. Количество и размеры коридоров не известны.
def walk_upstairs(): n = 0 while not wall_is_above(): move_up() if cell_is_filled(): n += 1 else: fill_cell() while not wall_is_beneath(): move_down() return n @task def task_8_18(): n = 0 while not wall_is_on_the_right(): if cell_is_filled(): n += 1 if wall_is_above(): if not cell_is_filled(): fill_cell() else: n += walk_upstairs() move_right() mov('ax', n)
Отредактировано py.user.next (Ноя. 16, 2019 06:30:38)
Офлайн
py.user.nextесли Вам не трудно, могли бы прокомментировать алгоритм, потому что функцию я написал такую же, но Ваш алгоритм не совсем понимаю. в частности:
Офлайн
Тут два разных счётчика: n магистральный (для магистрали) и n веточный (для ветки). Эти счётчики не зависят друг от друга, считаются по отдельности. Когда веточный n вычислен, он возвращается из функции в виде числа. То есть на выходе из функции мы получаем число изначально закрашенных клеток в ветке. И это число добавляется к магистральному n.
Когда ты проходишь одну ветку, в магистральном n находится сумма количества изначально закрашенных клеток на магистрали и количества изначально закрашенных клеток в пройденной ветке. Он их отдельно вычислил и сложил при выходе из ветки.
Вот это выражение
n += walk_upstairs()
n_in_branch = walk_upstairs() n += n_in_branch
Отредактировано py.user.next (Окт. 3, 2018 05:02:06)
Офлайн