Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 3, 2019 14:38:19

anded
Зарегистрирован: 2019-11-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Видимо мой вопрос был некорректный.
Я хотел уточнить: search_entrance — это обычная переменная?

Офлайн

#2 Дек. 4, 2019 00:50:24

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

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

anded
Я хотел уточнить: search_entrance — это обычная переменная?
Это самая обычная переменная
f_search_entrance
Имя переменной включает в себя пространство имён f и какое-то имя в этом пространстве имён. f - это сокращение от flags (флажки), а search_entrance - это имя одного из флажков, записанное в императивной форме (отвечает на вопрос “что сделать?”). Таким образом, когда ты будешь видеть этот флаг в каком-нибудь условии, ты будешь его читать как “флаг искать вход”. Если “флаг искать вход” установлен, то сделать то-то. Пока “флаг искать вход” установлен, выполнять то-то.

А так, это имя переменной ничем от других имён переменных не отличается. Просто в имени переменной мы сохраняем всю информацию об этой переменной, чтобы при чтении этого имени понимать всё про объект, которому это имя дано.

Ты бы мог называть этот флаг и просто
f
или
flag
И потом делать
f = True
или
flag = True
Но это хорошо смотрится, пока у тебя один флаг. В реальных же программах флажков десятки, поэтому ты очень быстро запутаешься в том, где флаг, а где не флаг; и если ты увидишь флаг, то ты не поймёшь сразу, что это за флаг и какой именно из флагов, которых у тебя множество. Поэтому каждому флагу мы даём признак флага в имени и даём хорошее имя флагу, понятное сходу и гарантированно отличающееся от других флагов по смыслу.


tags: flag name



Отредактировано py.user.next (Дек. 4, 2019 10:03:31)

Офлайн

#3 Дек. 4, 2019 07:44:16

anded
Зарегистрирован: 2019-11-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

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

py.user.next
Поэтому каждому флагу мы даём признак флага в имени и даём хорошее имя флагу, понятное сходу, и гарантированно отличающееся от других флагов по смыслу.

Большое спасибо за развернутый ответ!

Офлайн

#4 Дек. 13, 2019 17:02:50

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

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

py.user.next
Тут, кстати, html-страница с курсом этого парня, можешь посмотреть этот курс.
Вы выложили архив вэб страницы во втором сообщении третьей страницы этой темы.
Ссылка уже умерла, можете выложить ещё раз? Очень интересно почитать.
P.S. Благодарю за помощь новичкам и за содержательные комментарии.

Отредактировано Vasiliy_Python (Дек. 13, 2019 17:05:50)

Офлайн

#5 Дек. 14, 2019 00:19:49

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

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

Vasiliy_Python
Вы выложили архив вэб страницы во втором сообщении третьей страницы этой темы.
Ссылка уже умерла, можете выложить ещё раз? Очень интересно почитать.
Там всё работает. Просто форум не даёт скачивать файлы, если ты сидишь анонимно на нём. Вот ты зарегистрировался, теперь можешь зайти под ником и скачивать его.

Другое дело, что этот файл был создан в 2018 году, а у Тимофея в 2019 появился ещё курс. Хотя я нового на первый взгляд ничего в нём не увидел. Он шлифованно повторяет предыдущий курс.
https://www.youtube.com/playlist?list=PLRDzFCPr95fLuusPXwvOPgXzBL3ZTzybY

Ещё у него хороший курс по C есть. Он его ведёт, видимо, по книге K&R2. Я просто дежавю испытал, когда смотрел, так как всё то же самое читал в книге. Но смотреть есть смысл, потому что книгу нужно иметь и читать, тогда как видюху можно включить и послушивать на расслабоне. Он ещё и адаптирует материал для абитуриентов (считай школьников) - разжёвывает какие-то понятия до атомов и не грузит всем, что можно было бы рассказать.
https://www.youtube.com/playlist?list=PLRDzFCPr95fLjzcv6nNdjMu_9RcZgIM9U



Отредактировано py.user.next (Дек. 14, 2019 00:20:26)

Офлайн

#6 Дек. 14, 2019 11:00:59

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

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

py.user.next
Там всё работает
Действительно, все работает, скачал с ноутбука. Проблема была в браузере(хром), который в моем смартфоне, он постоянно выдает ошибку при скачивании этого файла.

Курс по алгоритмам я смотрел в прошлом году, очень понравился. Тогда было в лом делать лабу про робота и я ее пропустил. А сейчас решил доделать, но не все задачи удалось решить с наскока, по этому и забрел на ваш форум.

py.user.next
видюху можно включить и послушивать на расслабоне
Да, считаю это главным преимуществом, еще он очень подробно рассказывает. Даже перед сном, с опухшей головой, хорошо заходят его лекции. Потом во сне алгоритмы снятся

По си не смотрел курс, но учту ваше мнение и возможно гляну, в скором времени.

Офлайн

#7 Дек. 17, 2019 15:45:03

Tolya
Зарегистрирован: 2019-12-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Всем привет, не могу одолеть задачу №19: task_8_29
Посмотрел всю ветку, не нашел вопроса.

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

 searchexit = True #флаг того что поиск выхода из туннеля продолжается
from pyrob.api import *
# флаг_искать_проход := да
se = True #флаг того что поиск выхода из туннеля продолжается
@task
def task_8_29():
    def rwalk(): # процедура искать выход справа
        global se
        se = True
        while not wall_is_on_the_right():
            move_right()
            if se and wall_is_on_the_right() and wall_is_above():
                break
            elif not wall_is_above():
                se = False #выход справа найден
                print ("rwalk was executed" , se)
                #return (searchexit)
                move_up()
    def lwalk(): # процедура искать выход слева
        global se
        se = True
        while not wall_is_on_the_left():
            move_left()
            if not wall_is_above():
                se = False #выход слева найден
                print("lwalk was executed" , se)
                #return (searchexit)
                move_up(3)
#    while searchexit == True:
    print("before anything" , se)
    lwalk()
    rwalk()
    print("after rwalk", se)
    if not se:
        while not wall_is_above():
            move_up()
            print("2nd queue")
            print(se)
        while not wall_is_on_the_left():
            move_left()
  
if __name__ == '__main__':
    run_tasks()

По итогу даже работает. но не оставляет ощущения что это г@$окод

Заранее благодарю за помощь!

Отредактировано Tolya (Дек. 17, 2019 20:37:13)

Офлайн

#8 Дек. 17, 2019 17:10:22

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

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

Подскажите по task_7_7 она же 29
не пойму как продумать логику для высчитывания местоположения точки

Офлайн

#9 Дек. 18, 2019 02:55:46

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

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

Anime_Jedi
Подскажите по task_7_7 она же 29
не пойму как продумать логику для высчитывания местоположения точки
Нужно завести переменную n, в которой хранить на каждом шаге цикла движения к стене количество подряд закрашенных клеток. И у тебя в ней будет значение либо 0, либо 1, либо 2. Как только ты получишь в ней значение 2 и окажешься на закрашенной клетке, можно выйти из цикла.



Офлайн

#10 Дек. 18, 2019 03:05:03

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

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

Tolya
Всем привет, не могу одолеть задачу №19: task_8_29
Посмотрел всю ветку, не нашел вопроса.
Tolya
 searchexit = True #флаг того что поиск выхода из туннеля продолжается
Если ты посмотришь тему той задачи, то увидишь, что задача находится ещё до флаговых задач. То есть там флажок не нужен, потому что он как бы не пройден ещё. А если ты посмотришь тему задачи, то увидишь, что там должен быть цикл, вложенный в условие.

Ты должен пройти налево до препятствия.
Проверить, произошёл ли выход из ограждённой области.
Если выход произошёл, то перейти к процедуре перехода в конечную точку.
Если выход не произошёл, то ты должен идти направо до препятствия.
Проверить, произошёл ли выход из ограждённой области.
Если выход произошёл, то перейти к процедуре перехода в конечную точку.
Если выход не произошёл, то ты должен завершить выполнение.

Так как процедуры там тоже ещё не пройдены, то и процедур не должно быть. Всё нужно сделать без процедур (функций) и без флагов.



Отредактировано py.user.next (Дек. 18, 2019 03:05:30)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version