Pull to refresh

Comments 30

Очень много замечаний по коду. Но просто ввергло в недоумение, зачем использовать конкатенацию тут??

print(' '+'a',' '+'b' . . .

В-)

Для тех, кто хочет прокачать свои навыки использования python, предлагаю сделать следующее:

...

  • избавиться от конкатенации в print(' '+'a', ' '+'b, . . .

;-)

Незначительное замечание, лучше перебирать лист через i, item чем через idx, все же общепринято иметь i как индекс элемента

В этом коде вы часто используете list[0] list[1] вынести их в переменные, и разбейте код на функций, а то так код не очень читаемый)

У строк исходного текста, приведенных в этом "туториале", есть одно неоспоримое достоинство: будучи сохранёнными в файл они образуют программу, которая работает. Кроме того, некоторая наивность текста программы служит доказательством, что она явилась результатом самостоятельного труда студента, а не сгенерирована, например, Chat-GPT. Благодаря этому она может дать просто массу тем для обсуждения, на её примере можно объяснить многие не совсем очевидные новичкам вопросы.

Что не понравилось лично мне, так это фраза " Если этот туториал зайдет, то будут следующие выпуски." как неуместная своей сленговостью в статье, претендующей на образовательное содержание. Ну и использование жаргонизмов типа "рандомный" вместо "случайный". Остальное можно обсуждать, улучшать, доводить до ума...

Согласен. На этом учатся. Автору - дерзайте

Я являюсь студенткой Финансового Университета при Правительстве РФ и
обучаюсь на направлении Прикладная математика и информатика.


Кажется у вас препадают программирование очень плохо и принимают задачки спустя рукова.

Формально код работает, но многие вещи можно и нужно сделать намного лучше и проще.

Простое упражнение, берёте случайного знакомого и спрашиваете его (не показывая код), что делает переменная string_1 в функции f? Если он отвечает что буквы для столбцов шахматной доски, то хорошо. Если нет, то переименовываете и пробуете снова. После нескольких эксперементов на людях можно перейти на резиновую уточку, а потом и вообще на вооброжаемую. Но каждый раз этот вопрос должен быть задан для каждого имени в коде, перед тем как опубликовать код.

Минусов вам накидали за дело, но не сдавайтесь, перепишите код, с учётом комментариев. В общем обучение это череда ошибок и работа над ними.

Попробуйте поспрашивать чат GPT по поводу, что можно сделать с кодом и почему так лучше.

Для такой маленькой функции любые названия сгодятся. Можно было даже короче. Я бы их назвал cs и ns. Ну может быть chars и nums. И точно не ChessBoardHorozintalCoordinatLiteralIndexList. Потому что функция маленькая и все наглядно. А вот то, что функция маленькая и понятная, это заслуга авторши, это гораздо важнее, чем нэйминг локальной константы. Но саму функцию f лучше было как то нагляднее назвать, это несомненно.

Для такой маленькой функции любые названия сгодятся


Нет.

И точно не ChessBoardHorozintalCoordinatLiteralIndexList

Это какая-то фантазия из мира Джавы или С#. Там даже не список.

chars и nums это про то что внутри, я бы смотрел на ипользование. Например rows и cols.

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

Размер одно, а именование другое, если вы конечно размер в цикломатической сложности измеряете, а не в символах.

Но на самом деле не коротко и не понятно. Обращение к переменным определённым снаружи, два раза буквы объявлены.

Когда я только начинал изучать Хаскель у меня тоже бомбило от тамошнего повсеместного названия переменных как x, y, xs и ys. Потом, со временем , пришло просветление, что для маленьких изолированных функций это то, что надо. Особенно, если это функции, применяемые к обобщённым типам данных. В общем шаблоны нейминга это хорошо, но как и всякие шаблоны их надо применять не бездумно, а исходя из целесообразности в каждом конкретном случае. В данном случае существующие названия двух списков (списков по сути, а не по имплементации) букв и цифр вполне хорошие, т.к. свою задачу прекрасно выполняют и никаких трудностей не создают. А вот наименование функции не очень хорошее.

Особенно, если это функции, применяемые к обобщённым типам данных


Если это низкоуровневая функция, которая работает с абстрактными данными, то это норм. Особенно если в проекте так принято. В стандартной библиотеке Питона такое используется, например имя s. https://github.com/python/cpython/blob/main/Lib/string.py#L37

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

ага, главное научиться не использовать ключевые слова в качестве имён переменных

Советую вам данный материал для того, чтобы разобраться с условиями и циклами Цикл for в Python — как работает, синтаксис, примеры (pythonchik.ru) и Условный оператор - Основы Python (yandex.ru) . String_1 не делает буквы в данном коде, а используется для проверки, чтобы затем функция f превратила единицы в нули по заданной координате

Спасибо! Любая работающая программа с подробными комментариями для новичка полезна. А то что любую программу можно улучшать годами вошло в анекдоты...

Как видишь, авторке это не помогло.))

Так она их и не использует. Не знаю это умышленно или просто в вузе не научили. Скорее второе.

Я не использовала линтеры, потому что писала это в google colab

Зря. Ваш код мог быть немного лучше. Линтеры и форматеры задают нижнюю планку качества практически бесплатно.

Дело не в том, что зря или не зря, а в том, что в гугл колаб нет линтеров встроенных по умолчанию, а самому поставить - геморно, осбенно когда используешь колаб редко

Дело не в том, что зря или не зря, а в том, что в гугл колаб нет линтеров встроенных по умолчанию, а самому поставить - геморно, осбенно когда используешь колаб редко


Кто хочет найти решение, тот его найдёт.

Для сдачи зачётов тактика сделать хоть как бы подойдёт. На работе тоже иногда надо. А вот для пиара (написания статьи) и для получения знаний, такой подход так себе.

Кстати, это будет отличной темой для вашего собственного туториала. Напишите статью на тему того, как подключить какой-нибудь линтер в гугл колаб. Ждем!

Мне эта тема не интересна, не пользуюсь колабом.

Немного сахару:

Вместо

list_board = [[],[],[],[],[],[],[],[]]

Можно так

list_board = [[] for _ in range(5)]

list_board = [[] for _ in range(5)]

Автору на зметку: если делать копипасту, то тот кто читает может обсчитаться и вместо 8 насчитать 5.

Шахмыты эконом версия. 6 пешек сокартили, а слонов и королеву выдвинули вперёд.

Sign up to leave a comment.

Articles