Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 22, 2019 15:11:58

Pavel32272
Зарегистрирован: 2019-09-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

Привет, делаю задание task_2.py, я его вроде бы сделал, но можно было бы сделать это в один цикл, а не в два? как я

 from pyrob.api import *
@task
def task_1_2():
    for i in range(2):#задаю циклд с остановкой на 2 кругу
        move_right(1)#право на 1
        move_down(1)#низ на 1
    fill_cell()#закрасить текущую клетку
    for b in range(2):#новый икл
        move_right(1)
        move_down(1)
if __name__ == '__main__':
    run_tasks()
и зачем в конце мы пишем @task и в конце if __name__ == ‘__main__’:?

так же начал делать task3.py и не догоняю что вообще делать, стена всегда движется, как заставить остановиться перед стеной?

Отредактировано Pavel32272 (Сен. 22, 2019 15:22:53)

Офлайн

#2 Сен. 23, 2019 03:24:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

Pavel32272
Привет, делаю задание task_2.py
Задание 1 2
Там тема “Просто последовательности команд”. Там не нужно вообще циклы делать, просто пишешь разные действия друг за другом и всё.

Pavel32272
и зачем в конце мы пишем @task и в конце if __name__ == ‘__main__’:?
Это тебе книжку по питону надо прочитать. Там основы все описаны. Здесь смысла нет книжки переписывать на форум.



Отредактировано py.user.next (Сен. 23, 2019 03:26:17)

Офлайн

#3 Сен. 24, 2019 23:19:47

polosaty123
Зарегистрирован: 2019-09-24
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

  
@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()

Тоже решаю задачу 27 (7.5), не могу никак понять зачем тут переменная nn? И как move_right() понимает сколько шагов нужно делать до очередной закраски, если в параметрах ничего не указано?

Отредактировано polosaty123 (Сен. 24, 2019 23:21:39)

Офлайн

#4 Сен. 25, 2019 04:01:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

polosaty123
Тоже решаю задачу 27 (7.5), не могу никак понять зачем тут переменная nn? И как move_right() понимает сколько шагов нужно делать до очередной закраски, если в параметрах ничего не указано?
Тут блок-схема в виде диаграммы деятельности из UML для этой задачи.



То есть когда что-то непонятно, ты должен нарисовать блок-схему или засесть в дебаггере и пройти в нём всё по шагам. Поэтому нужно учиться и блок-схемы делать (сегодня это UML - продвинутые блок-схемы), и учиться дебаггером пользоваться, чтобы потом, когда нужно быстро что-то проверить, не думать о том, как его вообще включить, как в нём что-то запустить и как там шаги делать и просматривать на шагах значения переменных.



Отредактировано py.user.next (Ноя. 10, 2019 23:37:44)

Прикреплённый файлы:
attachment task27ad.png (56,1 KБ)

Офлайн

#5 Окт. 12, 2019 09:19:37

rahmanoff
Зарегистрирован: 2019-09-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

EugeneDemonSpeed666
Извините, что беспокою, но я не могу решить 28 задачу http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html

У меня получилось такое:
 a=0
while a<5:
    move_right()
    if cell_is_filled():
        a+=1
Но голову ломал долго.

Отредактировано rahmanoff (Окт. 12, 2019 09:22:08)

Офлайн

#6 Окт. 12, 2019 10:55:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

rahmanoff
У меня получилось такое:
  
a=0
while a<5:
    move_right()
    if cell_is_filled():
        a+=1
Это неправильно. Смотри сообщение.

Клетки могут и не идти подряд, а могут вообще стоять в конце пути группой при пустоте в самом пути. Нигде нет условия, что закрашенные клетки идут подряд и что закрашенные клетки начинаются сразу с ближайшего расстояния от исходной точки.



Отредактировано py.user.next (Окт. 12, 2019 10:57:12)

Офлайн

#7 Окт. 12, 2019 16:28:30

rahmanoff
Зарегистрирован: 2019-09-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

Но почему тогда:

INFO:pyrob:Total: 1/1
MacBook-Rakhmanov:robot-tasks-master kr$ /Library/Frameworks/Python.framework/Versions/3.7/bin/python3 /Users/kr/temp/EDU/Python/MFTI/MFTI02/robot-tasks-master/task_28.py
INFO:pyrob:Starting task task_7_6
INFO:pyrob:Task task_7_6 finished: +
INFO:pyrob:Total: 1/1
MacBook-Rakhmanov:robot-tasks-master kr$

Запускал более 10 раз.

Офлайн

#8 Окт. 12, 2019 16:54:06

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

rahmanoff
Запускал более 10 раз.
Мне показалось просто, что ты шаги считаешь, а не закрашенные клетки. Да, твой вариант правильный. Исходя из условия, там всегда есть пять закрашенных клеток. Моё решение просто предполагает, что закрашенных клеток может вообще не быть ни одной.



Офлайн

#9 Окт. 12, 2019 17:00:20

rahmanoff
Зарегистрирован: 2019-09-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

Да, у меня “a” - кол-во закрашенных клеток.
И, по условию, их точно больше чем 5.

Офлайн

#10 Окт. 12, 2019 18:34:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

rahmanoff
И, по условию, их точно больше чем 5.
Это в данной задаче есть такое условие. В других задачах там же подобных условий нет. Их и не должно быть, так как слишком много деталей в условиях сужают применимость кода к большему числу задач.

В данном случае, что будет, если остановиться надо будет вдруг на десятой закрашенной клетке или на тысячной? То условие про минимум 5+1 закрашенных клеток уже не гарантирует, что закрашенных клеток будет хотя бы семь, не говоря уже от 8, 9, …, 115. Вот поэтому оно и считается лишним - вводит ограничение на параметризацию программы. То есть, если мы хотим параметризировать программу, чтобы иметь возможность применить её к гораздо большему числу задач на поле, а не только, когда там пять клеток нужно пройти, нам нужно убрать условие про минимальное число закрашенных клеток на поле и ориентироваться по встретившейся стене.

Если посмотришь на моё решение (на псевдокоде), то увидишь, что мне всё равно, есть там закрашенные клетки или нет, больше пяти их или меньше пяти. При этом я могу поставить хоть десятку, хоть тысячу - моя программа не сломается, даже если там не окажется столько закрашенных клеток; она просто остановится у стены.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version