Программа не работает. Что делать?
Моя программа не работает! Что делать? В данной статье я постараюсь собрать наиболее частые ошибки начинающих программировать на python 3, а также расскажу, как их исправлять.
Проблема: Моя программа не запускается. На доли секунды появляется чёрное окошко, а затем исчезает.
Причина: после окончания выполнения программы (после выполнения всего кода или при возникновении исключения программа закрывается. И если вы её вызвали двойным кликом по иконке (а вы, скорее всего, вызвали её именно так), то она закроется вместе с окошком, в котором находится вывод программы.
Решение: запускать программу через IDLE или через консоль.
Проблема: Не работает функция input. Пишет SyntaxError.
Пример кода:
Причина: Вы запустили Python 2.
Проблема: Где-то увидел простую программу, а она не работает.
Пример кода:
Ошибка:
Причина: Вам подсунули программу на Python 2.
Решение: Прочитать об отличиях Python 2 от Python 3. Переписать её на Python 3. Например, данная программа на Python 3 будет выглядеть так:
Проблема: TypeError: Can’t convert ‘int’ object to str implicitly.
Пример кода:
Причина: Нельзя складывать строку с числом.
Решение: Привести строку к числу с помощью функции int(). Кстати, заметьте, что функция input() всегда возвращает строку!
Проблема: SyntaxError: invalid syntax.
Пример кода:
Ошибка:
Причина: Забыто двоеточие.
Проблема: SyntaxError: invalid syntax.
Пример кода:
Ошибка:
Причина: Забыто равно.
Проблема: NameError: name ‘a’ is not defined.
Пример кода:
Причина: Переменная "a" не существует. Возможно, вы опечатались в названии или забыли инициализировать её.
Решение: Исправить опечатку.
Проблема: IndentationError: expected an indented block.
Пример кода:
Причина: Нужен отступ.
Проблема: TabError: inconsistent use of tabs and spaces in indentation.
Пример кода:
Ошибка:
Причина: Смешение пробелов и табуляции в отступах.
Решение: Исправить отступы.
Проблема: UnboundLocalError: local variable ‘a’ referenced before assignment.
Пример кода:
Ошибка:
Причина: Попытка обратиться к локальной переменной, которая ещё не создана.
Проблема: Программа выполнилась, но в файл ничего не записалось / записалось не всё.
Пример кода:
Причина: Не закрыт файл, часть данных могла остаться в буфере.
Проблема: Здесь может быть ваша проблема. Комментарии чуть ниже 🙂
Также вам может быть полезно это описание:
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Python и Git. Автоматическая проверка кода требованиям спецификации

Многие команды делают Code Review, другие больше сосредотачиваются над Design Review, а многие не делают и вовсе, но статья не о том зачем это нужно, а о том, как частично автоматизировать процесс Code Review. Для своих проектов я решил съэкономить немного времени и человеческих ресурсов, и использовать автоматизированную проверку кода проекта на соответствие PEP 8, а также качества кода (pyflakes) и качество сообщений в Git. Полноценный Code Review при этом делать всёравно нужно, но уже в меньших объемах, а иногда и вовсе можно им пренебречь.
Итак, для работы нам понадобится установить pep8, pyflakes, а также отредактировать на рабочих станциях разработчиков хуки для Git: "pre-commit" и "commit-msg".
Серверные хуки специально не используются, так как уже будет произведен коммит и разработчику придется откатываться и т.д., что совсем не экономит время разработчика.
Установка
sudo apt-get install pyflakes pep8cd ~/work git clone git://github.com/adw0rd/pre-code-review.git pre-code-review ln -s /home//work/pre-code-review/pre-commit.py /home//work//.git/hooks/pre-commit ln -s /home//work/pre-code-review/commit-msg.py /home//work//.git/hooks/commit-msg chmod +x /home//work//.git/hooks/pre-commit chmod +x /home//work//.git/hooks/commit-msgКод для хука "pre-commit.py" повзаимствован отсюда и впоследствии доработан. В будующем планировалось добавить туда проверку докстрингов (процентное соотношение документации к коду, либо какие-либо другие метрики) и запуск тестов (но это сомнительно, так как скажется на производительности выполнения коммитов).
Для таких тяжелых операций как тесты есть удобный инструмент - Continuous Integraton (CI), такие как Hudson, Jenkins (django-jenkins), CruiseControl и Atlassian Bamboo. Также, рекомендую ознакомится с продуктом для Code Review - Atlassian Crucible.
Примеры
Пример проверки кода:
$ git commit -m "Something I" ********************************* ***** CODE REVIEW IS FAILED ***** ********************************* Check files: //views.py, /common/context_processors.py, /common/decorators.py, /settings.py, //models.py, /urls.py pep8: .//urls.py:14:19: E241 multiple spaces after ',' .///models.py:18:1: E302 expected 2 blank lines, found 1 pyflakes: .//urls.py:3: 'include' imported but unused .//urls.py:4: undefined name 'User'Хук "pre-commit" проверяет только staged изменения (поэтому после каждого фикса вам придется делать git-add), для того чтобы проверять весь индекс сразу нужно использовать "--debug":
$ .git/hooks/pre-commit --debugПример проверки сообщения коммита:
$ git commit -m "Something II" ********************************** ***** CHECK COMMIT IS FAILED ***** ********************************** > check_task_tracking_identificator: >> Wrong Issue ID! Use format: [-], example: [PROJ-1027]Если добавить к команде git-commit опцию "--no-verify", то вы сможете пропустить проверку хуков.
-n, --no-verify This option bypasses the pre-commit and commit-msg hooks. See also githooks(5).Такого вида контроль повышает качества кода на входе в репозиторий, разработчики оставляют меньше граблей в коде и т.д. Вообщем это минимум, который нужен для повышения качества вашего проекта.
Комментарии
![]()
Также можно определить хук "prepare-commit-msg", который будет на основании имени ветки (например "task_PROJ-1234_unsubscribe_link_for_newsletters") определять её идентификатор, идти в Issue Tracking систему и получать название задачи, после чего вставлять его в качестве префикса к сообщению, т.е.:
git commit -m "Some fix" ==> "Необходимо сделать ссылку на отписку от подписок [PROJ-1234] Some fix"https://github.com/FroMage/git-jira Вот неплохая фича, можно управлять жирой из гита
В будующем планировалось добавить туда проверку докстрингов (процентное соотношение документации к коду, либо какие-либо другие метрики)
Для приведения кода к pep8 можно использовать autopep8
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Invalid Syntax (pyflakes E) Python in Spyder 4.1.2 #1086
BillLe2000 opened this issue May 3, 2020 · 10 comments
Invalid Syntax (pyflakes E) Python in Spyder 4.1.2 #1086
BillLe2000 opened this issue May 3, 2020 · 10 comments
Comments
BillLe2000 commented May 3, 2020
Hello,
I have an invalid syntax (pyflakes E) in my code below. Please see the two link below. I ran the code and the output was right, but I couldn't understand why my code had an error. Could anyone know why? Please tell me how to fix it. Thank you in advance.![]()
![]()
Thank you!
BenThe text was updated successfully, but these errors were encountered:
stale bot commented Oct 4, 2020
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
stale bot added the inactive label Oct 4, 2020
stale bot removed the inactive label Oct 21, 2020
SushmaDasari96 commented Jan 5, 2021Hello,
I have an invalid syntax (pyflakes E) in my code below. Please see the two link below. I ran the code and the output was right, but I couldn't understand why my code had an error. Could anyone know why? Please tell me how to fix it. Thank you in advance.![]()
![]()
Thank you!
BenHi,
I have run the code in the Spyder IDE but I did not get any error, I think it's just a bug that comes and goes. anyway, the output is correct,YudiGuzman commented Apr 12, 2021
Hello,
I have an invalid syntax (pyflakes E) in my code below. I think the problem is because of conflict on version package but I am not sure. Could anyone know why? Please tell me how to fix it. Thank you in advance.import keras
import keras.models import Sequential
import keras.layers import Dense
Contributor
diraol commented Apr 12, 2021Hi @YudiGuzman, you are using the wrong syntax. You should do from . import . Instead of import . import .
Что означает ошибка SyntaxError: invalid syntax
Ситуация: программист взял в работу математический проект — ему нужно написать код, который будет считать функции и выводить результаты. В задании написано:
«Пусть у нас есть функция f(x,y) = xy, которая перемножает два аргумента и возвращает полученное значение».
Программист садится и пишет код:
a = 10 b = 15 result = 0 def fun(x,y): return x y result = fun(a,b) print(result)Но при выполнении такого кода компьютер выдаёт ошибку:
File "main.py", line 13
result = x y
^
❌ SyntaxError: invalid syntaxПочему так происходит: в каждом языке программирования есть свой синтаксис — правила написания и оформления команд. В Python тоже есть свой синтаксис, по которому для умножения нельзя просто поставить рядом две переменных, как в математике. Интерпретатор находит первую переменную и думает, что ему сейчас объяснят, что с ней делать. Но вместо этого он сразу находит вторую переменную. Интерпретатор не знает, как именно нужно их обработать, потому что у него нет правила «Если две переменные стоят рядом, их нужно перемножить». Поэтому интерпретатор останавливается и говорит, что у него лапки.
Что делать с ошибкой SyntaxError: invalid syntax
В нашем случае достаточно поставить звёздочку (знак умножения в Python) между переменными — это оператор умножения, который Python знает:
a = 10 b = 15 result = 0 def fun(x,y): return x * y result = fun(a,b) print(result)В общем случае найти источник ошибки SyntaxError: invalid syntax можно так:
- Проверьте, не идут ли у вас две команды на одной строке друг за другом.
- Найдите в справочнике описание команды, которую вы хотите выполнить. Возможно, где-то опечатка.
- Проверьте, не пропущена ли команда на месте ошибки.
Практика
Попробуйте найти ошибки в этих фрагментах кода:
x = 10 y = 15 def fun(x,y): return x * ytry: a = 100 b = "PythonRu" assert a = b except AssertionError: print("Исключение AssertionError.") else: print("Успех, нет ошибок!")

