E117 over indented что это
В чем здесь ошибка, не понимаю
Ошибка оформления кода.
stderr:
./solution.py:8:17: E117 over-indented
./solution.py:10:1: E302 expected 2 blank lines, found 0
Код не соответствует стандарту PEP8
или в нем есть синтаксические ошибки
make: *** [build] Error 1
Не понимаю в чём здесь ошибка, Python
В общем, решаю задачу из книги Майкла Доусона «Программируем на Python», вот сама задача.
В чём здесь ошибка?
Решаю такую задачу: напишите программу которая с помощью tkinter заполняет экран треугольниками.
В чем здесь ошибка?
Взял пример из книги 3d game programming with DirectX11, немного переделал, т.к. #include.
там после «:» должно быть четыре пробела.
Но основная ошибка такая:
Ошибка оформления кода.
stderr:
./solution.py:8:17: E117 over-indented
./solution.py:10:1: E302 expected 2 blank lines, found 0
Код не соответствует стандарту PEP8
или в нем есть синтаксические ошибки
make: *** [build] Error 1
Вот такая задача:
Формат ввода
Вводятся три строки.
Формат вывода
Вывести эти строки в порядке возрастания длины строки. Если длины одинаковы, то по алфавиту.
Пример 1
Ввод
Rhinactinidia eremophila
Rhododendron parvifolium
Melilotoides platycarpos
Вывод
Melilotoides platycarpos
Rhinactinidia eremophila
Rhododendron parvifolium
Добавлено через 1 минуту
u235, я не понимаю как их сделать в этом окошке быстрого ответа
Вопрос №36716 от пользователя Vitaly Chekunov в уроке «Создание списков и добавление элементов», курс «Python: Списки»
Не проходит ни один тест и линтер. В чем может быть проблема?
Вы бы хоть сообщения от линтера прикрепили!
Вопрос от меня: почему у вас табами отступы сделаны? Настройте редактор, чтобы он вставлял 4 пробела вместо символа табуляции, как в Python принято!
Aleksei Pirogov, Можете подсказать как настроить? До этого курса все задания так делал, ничего не менял. Все проходило.
То есть это па сайте так себя редактор ведёт? С этим будем разбираться. А линтер-то что пишет?
Aleksei Pirogov, Тесты
Aleksei Pirogov, убрал табы и сделал пробелы. Теперь линтер ругается только на это.
Тесты по прежнему не прохожу. Почему нельзя отступы делать табами? Один таб = четыре пробела. В чем разница?
Почему нельзя отступы делать табами? Один таб = четыре пробела. В чем разница?
Вы путаете нажатие клавиши и вставку символа табуляции! Если редактор настроен «под Python», то он будет по нажатию вставлять четыре пробела. Если не настроен, то будет вставлять один символ табуляции (символ с кодом 08h).
Aleksei Pirogov, спасибо, с линтером вопрос решил, все отлично, ошибок нет. Как теперь пройти тест в целом? Вывод тестов.
В REPL все тесты проходит.
Что значит «В REPL все тесты проходит.»? Чьи тесты, ваши? Нужно, чтобы код наши тесты проходил 🙂
У вас функция get_range включает само переданное число в результирующий список. Это противоречит условиям задачи.
Aleksei Pirogov, не включает, я проверял.
Python: надежная защита от потери запятой в вертикальном списке строк
Списки строк в программах встречаются часто. Для удобства чтения их не менее часто форматируют вертикально, по одной строке. И есть в такой конструкции уязвимость — если при изменении списка потерять запятую между элементами, то многие языки просто склеют строки слева и справа от пропущенной запятой — в результате получится валидный с точки зрения языка список, в котором на один элемент меньше чем ожидается и один элемент имеет некорректное значение. Есть много способов профилактики этой проблемы, но недавно на stackoverflow мне показали настолько простой и надежный способ, что я просто не могу им не поделиться.
Демонстрация проблемы
Сначала посмотрим визуально как выглядит проблема. Типичный вертикальный список, в котором потеряна запятая:
Если внимательно посмотреть, между строками «italian» и «spanish» пропущена запятая. Но при запуске такой программы ошибок не будет: Python просто склеит строки «italian» и «spanish», превратив наш список вот в это:
На практике такие опечатки встречатся не то чтобы очень часто — но к багам приводят знатным и долгоотлаживаемым.
Как бороться по-феншую
В соответствии c феншуем, данный ряд проблем необходимо отсекать статическими анализаторами кода типа lint в рамках автобилда. Но тут есть неприятный нюанс — pylint по умолчанию не считает пример выше ошибочным. Следовательно, придется его долго и муторно настраивать, потому как есть много вполне корректного кода, где строки склеиваются по делу и никаких запятых быть не должно. Плюс не у всех настроена связка pylint + autobuild, а поднимать полноценный continous integration с нуля только ради указанной проблемы не всегда с руки.
Как борются на практике
На данный момент есть два популярных способа борьбы с этой проблемой. Первый заключается в том, чтобы оканчивать каждую строку запятой, включая последнюю, а терминатор списка писать на отдельной строке. Это позволяет в большинстве случаев избежать проблем при копипасте строк и удалении строк:
Минусом первого способа является то, что он защищает только от ошибок копипасты — но не защищает от опечаток и результатов применения к тексту скриптов.
Второй способ заключается в тактической установке запятых не после элементов, а перед ними. Это вытраивает красиву вертикальную черту, в которой пропуски видны невооруженным глазом:
Недостатком данного способа является отсутствие защиты у первого элемента (если его куда-нибудь переместить, то будет потеря запятой) и некавайный непривычный внешний вид. Совсем непривычный. Плюс такая же уязвимость переда скриптами как и в первом способе — массовая вивисекция текста регулярным выражением не заметит красивую вертикальную черту.
Новый способ
Был подсказан гуру на stackoverflow. Не могу сказать что он особо красив или удобен — но он прост и надежен. При потере запятой случается ошибка выполнения скрипта. Способ заключется в окружении каждой строки круглыми скобками — это превращает epression типа строка в сложносоставной expression, который уже склеивать нельзя:
Вот такое неожиданное решение. Надеюсь, послужит кому-нибудь источником вдохновения. Приятных выходных, коллеги 🙂
Indentation containing tabs raise E117 error (again) #885
Comments
juancroldan commented Sep 11, 2019
This happened to me when using pycodestyle 2.5.0.
Instruction to reproduce:
The text was updated successfully, but these errors were encountered:
juancroldan commented Sep 11, 2019
I’m currently ignoring E117 as a workaround, which can mask actual E117 errors.
FichteFoll commented Sep 11, 2019
That’s mostly a matter of tab historycally being used to indent by 8. The only way to make this work «properly» would be to add an option for what a tab should be expanded into, imo.
GPHemsley commented Sep 21, 2019
Use 4 spaces per indentation level.
If a tab is used as indentation (my preference), it should be assumed to have a tabwidth of 4 by default.
If other codebases are using other tabwidths (8 and 2 are probably the most common alternatives), then it might make more sense to add a config option to allow customizing tabwidth rather than having the default divert that far from PEP8.
asottile commented Sep 21, 2019
this is fixed on master:
@GPHemsley the standard width of a tab is 8 btw
GPHemsley commented Sep 22, 2019
@asottile There is no «standard» width of a tab. The default width of a tab differs depending on what domain it appears in. In the domain of programming, most IDEs allow tab size to be configured by the user (or the file).
But we’re not talking about broader culture here; we’re talking about Python code styling. (We could argue about which size is better in other domains, but that would be off-topic.)
As I said above, in the domain of Python code styling, I think having the default size match the Python indentation size (4) would be best, with a configuration option allowing that to be overridden.
I also think it’s important to distinguish between indentation using a combination of tabs and spaces (always bad) and indentation using only tabs (likely programmer preference).
Код не соответствует стандарту PEP8
stderr:
mv: ‘/temp/compiling/solution.py’ and ‘solution.py’ are the same file
./solution.py:8:9: E722 do not use bare ‘except’
Код не соответствует стандарту PEP8
Подскажите пожалуйста что это за ошибка и как ее исправить
Заранее спасибо)
Не соответствует стандарту PEP-8
marshrut = input(‘Добрый день странник! Выбери свой дальнейший путь! налево, направо, прямо.’) if.
Соответствует ли код стандарту?
Привет! Имеется следующий код (в очень урощенном виде) struct foo <>; int main() < struct.
Brainf, используй конкретное исключение, которое ты ожидаешь в блоке трай, например ValueError
Если верить pycharm. то стандарту не соответствуют только переменные(i, j), так как не используются и пустые скобки класса(поставил в них object).
Добавлено через 4 минуты
except заменил на finally, тоже не нравилось валидатору.
Я конечно дико извиняюсь, не зачтите за идиота, но я ничего не понял, хотя очень интересно)
Добавлено через 50 секунд
Добавлено через 2 минуты
какому стандарту С++ соответствует minGW
Здравствуйте! У меня возникла такая проблема: я сейчас изучаю С++ и компилирую программы с помощью.
Какова вероятность того, что устройство соответствует стандарту?
На заводе 95% аппаратуры выдерживает испытание. Из прошедших испытание устройств 97% соответствует.
Как писать код по стандарту
Извините, что создал тему скорей всего в неподходящей ветке. Но все же. Где-то читал (к сожалению.
Соответствует ли код заданию?
вот задание: Для малых размеров массива (N) быстрая сортировка может работать медленнее простых.
ОФОРМИТЬ по PEP8
(lambda hour, minute, second : print(abs(hour * 30 + minute * 0.5 + second * 0.5/60))) \.