Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 July 04

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Иван Безумный
https://pastebin.com/ukDFbvk9
#вопрос
Практическое задание "Робот". Задача №23
Зацикливается на последнем коридоре в случае, если перед последним коридором есть еще 1 (в плотную прижаты)
То, что код выглядит очень запутанным и много лишних каких-то элементов понимаю, но это мой личный код и я хочу разобраться в проблеме. Перед тем, как написать сюда, я очень долго мучаюсь сам. Переписываю код по многу раз (этот раз 40 переписывал, но возвращался к нему же).
Если Вы не желаете разбираться и помогать - не нужно об этом заявлять, можно просто проигнорировать данное сообщение.
Говорить, что я тупой, ибо написал такой карявый код - тоже нет необходимости. Всем это и так видно.
вложенные циклы вместо завершения циклов. с ними сложно.
во вложенном цикле тебе надо завершить всё. у тебя так есть внешний цикл,
ты после шага вправо на строке 33,  тебе надо бы завершить цикл:
20:    while wall_is_beneath() and not wall_is_on_the_right():
но вместо этого снова работает условие
24:            while not wall_is_above():
источник

ИБ

Иван Безумный... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
вложенные циклы вместо завершения циклов. с ними сложно.
во вложенном цикле тебе надо завершить всё. у тебя так есть внешний цикл,
ты после шага вправо на строке 33,  тебе надо бы завершить цикл:
20:    while wall_is_beneath() and not wall_is_on_the_right():
но вместо этого снова работает условие
24:            while not wall_is_above():
но цикл на строке 20 должен завершаться, если стена справа имеется. Сейчас буду разбираться, спасибо
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
можно подумать и ввести флажки, которые будут определять из какого цикла следует сейчас выйти, и их проверять в условии while., а в теле цикла их контроллировать.
в низкоуровневых языках, и языках прошлого, для алгоримтов  есть оператор безусловного перехода goto
в питоне по сути этого можно добиться с помощью вызова функций и там можно с помощью return не завершать цикл, а выйти из него.
кстати с использованием функций код будет проще
источник

ИБ

Иван Безумный... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
можно подумать и ввести флажки, которые будут определять из какого цикла следует сейчас выйти, и их проверять в условии while., а в теле цикла их контроллировать.
в низкоуровневых языках, и языках прошлого, для алгоримтов  есть оператор безусловного перехода goto
в питоне по сути этого можно добиться с помощью вызова функций и там можно с помощью return не завершать цикл, а выйти из него.
кстати с использованием функций код будет проще
да, знаю, что с ними будет красивее и удобочитаемей, но пока я хочу просто закончить задачу №23. с задачей 24 буду уже писать функции, там без этого будет слишком сложно. По сути написав одну функцию, я смогу завершить 4 задания под ряд с минимальной затратой времени.

Еще раз Огромнейшее Вам спасибо!
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
рекомендую:
написать функцию которая красит столбец вверх, и опускает вниз.
тогда достаточно будет написать
while True:
   if нет_стены_сверху(): покрасить_столбец_и_вернуться():
   if есть_стена_справа(): break
кусок_кода_который_возвращается_к_началу_корридора
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
и еще одно, это циклы с постусловием как в примере, и его отличие от привычного цикла с предусловием:
while not есть_стена_справа():
   if нет_стены_сверху():
       покрасить_столбец_и_вернуться()

я тут столько раз об этом писал: https://ru.wikipedia.org/wiki/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0_%D0%BD%D0%B0_%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%86%D1%83
и там ссылка на статью про циклы, почитать про постусловием и предусловием
источник

ИБ

Иван Безумный... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
рекомендую:
написать функцию которая красит столбец вверх, и опускает вниз.
тогда достаточно будет написать
while True:
   if нет_стены_сверху(): покрасить_столбец_и_вернуться():
   if есть_стена_справа(): break
кусок_кода_который_возвращается_к_началу_корридора
Хорошо, спасибо. Я думал об этом, но это надо удалить такую уйму кода и переписать всё заново. Я с ним просидел весь вчерашний день, вечер и половину утра. Хочу доканать его. Хотя может так и сделаю. В смысле перепишу его с нуля через функцию закраски коридора.
Я буду возвращаться к своим практическим заданиям через пару недель, когда уровень написания кода чуть повысится, для модернизации его в уже выполненных заданиях.

Спасибо за последнее Ваше сообщение, буду изучать!
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Иван Безумный
да, знаю, что с ними будет красивее и удобочитаемей, но пока я хочу просто закончить задачу №23. с задачей 24 буду уже писать функции, там без этого будет слишком сложно. По сути написав одну функцию, я смогу завершить 4 задания под ряд с минимальной затратой времени.

Еще раз Огромнейшее Вам спасибо!
у вас там 3 вложенных цикла. а достаточно 2.
иначе либо будет ошибка зацикливания как сейчас, либо сложные механизмы контроля чтобы из вложенного цикла завершить родительский.
источник

in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Здравствуйте
источник

GZ

Gleb Zakharov in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Привет
источник

z

zhdoon in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
добрый день, кто нибудь подскажет, как на Flask обработать не http запрос?
я хочу Flask использовать в качестве tcp  сервера. Мне от железки приходит бинарный пакет, я его хочу обработать и вывести соответствующую инфу на экран
источник

z

zhdoon in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
сейчас я в логах получаю:
code 400, message Bad request version ('\x9c2ñ8µkd6c')
"‘ì݅k -  œ2ñ8µkd6c" HTTPStatus.BAD_REQUEST -
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
zhdoon
добрый день, кто нибудь подскажет, как на Flask обработать не http запрос?
я хочу Flask использовать в качестве tcp  сервера. Мне от железки приходит бинарный пакет, я его хочу обработать и вывести соответствующую инфу на экран
никогда не пробовал но может вот это?
https://github.com/heroku-python/flask-sockets
источник

z

zhdoon in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
мне кажется это из другой области
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
а точно надо обслуживать на одном порту и http-трафик и сырые tcp?
источник

z

zhdoon in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
речь идет о том, что на порт Flask прилетает пакет вооще не от мира сего.
источник

z

zhdoon in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
ок, как исключение это поймать?
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
zhdoon
добрый день, кто нибудь подскажет, как на Flask обработать не http запрос?
я хочу Flask использовать в качестве tcp  сервера. Мне от железки приходит бинарный пакет, я его хочу обработать и вывести соответствующую инфу на экран
могу предложить поспрашивать у https://t.me/ru_python_beginners или более специализированных веб- или  фласк-программеров
источник

ТХ

Тимофей Федорович Хи... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Уважаемые обучающиеся и коллеги (потенциальные), я хотел бы собрать из вас фокус-группу от 3-х до 10-ти человек, чтобы  улучшить курс "Практики программирования на Python 3".

Требования:
1) желание помочь,
2) курс 2019 должен быть вами уже пройден (полностью или почти полностью),
3) Написать мне кратко о себе личным сообщением здесь, в Telegram.
источник

ТХ

Тимофей Федорович Хи... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
источник