Тема для тупого флуда
|
|
| Дата: Вторник, 23.06.2020, 13:44 | Сообщение # 3811 |
Admin
Сообщений: 15113
|
ну вот, к примеру
Код for (int j=0;j<4;j++) { for (int i=0;i<4;i++) { tft.setCursor(22 + (60*i), 100 + (60*j)); tft.setTextSize(3); tft.setTextColor(WHITE); tft.println(symbol[j][i]); } } начало и конец каждого цикла ограничивают открывающая и закрывающая скобки, все сразу понятно где начинается и где заканчивается цикл
Warcraft 3 - это уже легенда WC3 - это мини-легенда Дота - это альтернативный путь развития варкрафта
|
|
|
|
| Дата: Вторник, 23.06.2020, 14:40 | Сообщение # 3812 |
Генералиссимус
Сообщений: 2234
|
Ааа, так вот ты о чём - о скобках. Скобок в питоне таких нет, это управляется табуляцией или пробелами. По сравнению со многими языками непривычно, наверное, но вообще при грамотном устройстве кода совершенно не мешает - в чём-то даже удобнее. Никогда не возникает сложности понять, где кончается цикл - там просто другой уровень отступов начинается
|
|
|
|
| Дата: Вторник, 23.06.2020, 16:10 | Сообщение # 3813 |
Admin
Сообщений: 15113
|
Цитата Salamandr ( ) это управляется табуляцией или пробелами то есть лишний пробел случайно поставил, не заметил, и у тебя программа уже делает совершенно не то, что нужно?
Warcraft 3 - это уже легенда WC3 - это мини-легенда Дота - это альтернативный путь развития варкрафта
|
|
|
|
| Дата: Вторник, 23.06.2020, 16:38 | Сообщение # 3814 |
Генералиссимус
Сообщений: 2234
|
В большинстве случаев программа просто не запустится и выдаст ошибку табуляции, т.к. интерпретатор проверяет эти вещи, чтобы пробелы стояли ровно. Но если в конце цикла ты вместо того, чтобы вернуть табуляцию на предыдущий уровень, продолжишь как бы писать код на том же уровне, что и тело цикла, то все эти действия будут выполняться не после завершения цикла, а при каждой итерации. В общем это дело даже не привычки как по мне, а первоначального понимания принципа работы такого синтаксиса.
На максимально простом и абстрактном примере. В таком коде:
Код connection = websocket.connect(uri) for x in range(10): text = random_message_text() connection.send(text) connection.close()
Можно допустить такую ошибку, и сообщение по вебсокету отправится только одно вместо 10, т.к. соединение закроется при первой итерации, а не после выполнения цикла:
Код connection = websocket.connect(uri) for x in range(10): text = random_message_text() connection.send(text) connection.close()
Другие вариации: [cut=Примеры]
Код connection = websocket.connect(uri) for x in range(10): text = random_message_text() connection.send(text) connection.close()
Код connection = websocket.connect(uri) for x in range(10): text = random_message_text() connection.send(text) connection.close()
Код connection = websocket.connect(uri) for x in range(10): text = random_message_text() connection.send(text) connection.close()
[/cut] Интерпретатор не пропустит и выдаст ошибку, т.к. отступы должны быть ровными. Они в этом плане ничуть не менее строгие чем скобки, просто со своими правилами
Добавлено (23.06.2020, 16:43) --------------------------------------------- Твой пример как-то так будет выглядеть:
Код for j in range(4): for i in range(4): tft.setCursor(22 + (60*i), 100 + (60*j)) tft.setTextSize(3) tft.setTextColor(WHITE) tft.println(symbol[j][i])
Тут тоже шаг влево, шаг вправо - либо ошибку интерпретатор выкинет, либо неправильно отработает, если последние строки у тебя как-то так переместятся:
Код for j in range(4): for i in range(4): tft.setCursor(22 + (60*i), 100 + (60*j)) tft.setTextSize(3) tft.setTextColor(WHITE) tft.println(symbol[j][i])
Сообщение отредактировал Salamandr - Вторник, 23.06.2020, 16:44 |
|
|
|
| Дата: Среда, 24.06.2020, 13:54 | Сообщение # 3815 |
Генералиссимус
Сообщений: 13014
|
Собственно не вижу проблем в подобном коде, вернее сказать, учитывая, что пишу на другом языке, да и все остальные которые изучал так же были со скобками, хотя банальный if можно записать и без скобок, если там всего одно действие, типа:
Код if(x = 2) a = b else a = c
Ну это я условно =)
Так вот я к тому, что подобные записи на Питоне не кажутся мне сложными или не понятными. По сути нормально оформленный код на других языках будет выглядеть абсолютно так же, только ещё будут скобки, вот и всё =)
это Ксопик!
|
|
|
|
| Дата: Среда, 24.06.2020, 14:04 | Сообщение # 3816 |
Admin
Сообщений: 15113
|
Просто если несколько уровней вложений (до 4-5 у меня бывало) мне кажется с этими отступами замучаешься их отслеживать. А в более менее прямолинейных программах может быть это жизнеспособный подход
Warcraft 3 - это уже легенда WC3 - это мини-легенда Дота - это альтернативный путь развития варкрафта
|
|
|
|
| Дата: Среда, 24.06.2020, 14:13 | Сообщение # 3817 |
Генералиссимус
Сообщений: 2234
|
На самом деле считается хорошим тоном в стиле программирования не делать множество вложенных отступов и циклов. Если появляется много вложенных циклов, то обычно код можно переписать в таком стиле, чтобы смотрелось это человекопонятно - разбить код по функциям, например, и т.д. Добавлено (24.06.2020, 14:15) --------------------------------------------- Так-то ты и в коде со скобками делаешь разные отступы. Так же есть опасность не в том месте поставить скобку, и всё, код работает не так, как надо))
|
|
|
|
| Дата: Среда, 24.06.2020, 20:50 | Сообщение # 3818 |
Admin
Сообщений: 15113
|
Цитата Salamandr ( ) чтобы смотрелось это человекопонятно - разбить код по функциям, например, и т.д. это не всегда удобно, когда пишешь функцию для какого-нибудь редкого уникального расчета его обычно лучше объединить в одну функцию
Цитата Salamandr ( ) Так же есть опасность не в том месте поставить скобку, и всё, код работает не так, как надо)) не, скобки у программистов "в крови", а вот отступы вместо них - это чужеродный искусственный элемент ))
Warcraft 3 - это уже легенда WC3 - это мини-легенда Дота - это альтернативный путь развития варкрафта
|
|
|
|
| Дата: Четверг, 25.06.2020, 14:41 | Сообщение # 3819 |
Генералиссимус
Сообщений: 13014
|
Цитата Admin ( ) не, скобки у программистов "в крови", а вот отступы вместо них - это чужеродный искусственный элемент )) Если не будет отступов, то код будет не читаемый, даже со скобками. Ещё когда у меня была книжка по Делфи, да и что-то постарее где-то находил, в любом листинге кода были отступы. Вот войну про то, что отступы должны быть либо из 4ёх пробелов либо из одного таба, это знаю. А что отступы не нужны вообще, какая-то наркомания =) Либо ещё одно, это когда открывающая фигурная скобка тела if'а ставится на той же строке, что и условия, либо переносится на следующую =) Это ещё один вечный спор =)
Цитата Admin ( ) это не всегда удобно, когда пишешь функцию для какого-нибудь редкого уникального расчета его обычно лучше объединить в одну функцию Есть такая штука, как обращение к базе, и можно этот вызов закинуть в какой нибудь while, потом в foreach, потом ещё куда-то и всё это новая и новая вложенность. Ну и нагрузка на базу соответственно. Вместо 1кк обращений к базе, нужно собрать инфу в один массив и нормально составленным запросом один раз обратиться к базе, получив всё нужное. В случаях, когда структура базы идиотская и такое не прокатывает... ну тут уже ничего не попишешь. Ну и думаю Саламандр говорит не про 3-5 вложенностей, а про 10-20, а то и больше. Если такая матрёшка получается, то явно что-то не правильно продуманно. И да, это не про 10 ифов, которые стоят друг за другом, т.к. находятся на одном уровне вложенности =)
Цитата Salamandr ( ) Так же есть опасность не в том месте поставить скобку, и всё, код работает не так, как надо)) Вот кстати да =) Но тут что так, что эдак, везде можно накосячит. Глупые ошибки перестаёшь делать со временем =) А если и возникают, то чаще из-за усталости, когда над одной задачей просидел уже 12 часов =) Я так в js вместо alert("Текст"); писал alarm("Текст"); и не понимал, почему такой функции типа нет =) Если что первая выводит окошко в браузере с сообщением, а второй не существует =)
это Ксопик!
|
|
|
|
| Дата: Четверг, 25.06.2020, 16:31 | Сообщение # 3820 |
Admin
Сообщений: 15113
|
Цитата XOPYC ( ) Если не будет отступов, то код будет не читаемый, даже со скобками отступы, конечно, нужны для читаемости кода, но одно дело когда ставишь их по собственному желанию, а другое - когда это обязаловка
Цитата XOPYC ( ) нужно собрать инфу в один массив и нормально составленным запросом один раз обратиться к базе в той программе, которую я 5 лет писал на работе, это все не нужно. Она узко специализированная расчетная, аналогов нет
Warcraft 3 - это уже легенда WC3 - это мини-легенда Дота - это альтернативный путь развития варкрафта
|
|
|
|