python пошаговое выполнение кода
Python с абсолютного нуля. Учимся кодить без скучных книжек
Содержание статьи
От редакции
Недавно мы проводили опрос о том, какой курс по Python был бы интереснее читателям. Две первые строчки с большим отрывом в нем заняли варианты «для хакера» и «Python с нуля». Узнав о таком положении дел, мы немедленно заказали статью о том, как начать программировать на Python. Если она будет иметь успех, то может превратиться в целую серию. Отличие нашего подхода — в том, что мы объясняем все живым языком и даем нескучные примеры. В общем, обучение в фирменном стиле «Хакера»!
И, поскольку это эксперимент, статья доступна без платной подписки.
Если у тебя на компе есть современный дистрибутив Linux, то в него уже входит Python 3, а писать первые программы будет удобно в IDLE — простом редакторе кода, который прилагается к Python. В Ubuntu, чтобы установить его, набери в консоли
В Windows при установке Python обязательно отметь на первом экране установщика галочку Add to Path, чтобы можно было запускать python3 из командной строки в любом удобном месте.
Запустив IDLE, зайди в Options → Configure IDLE, перейди на вкладку General и поставь галочку на пункте Open Edit Window, нажми ОK и перезапусти IDLE. Теперь можно писать программы, сохранять их и запускать клавишей F5. Ну что, погнали?
Переменные
А если изначально неизвестно, какие числа надо складывать? Тогда пришлось бы сперва попросить юзера ввести их в консоли и нажать Enter. Давай так и сделаем:
Внутри скобочек у input ты пишешь пояснение для юзера, что конкретно его просят ввести. Но вот беда, по умолчанию все, что вводится через input, считается не числом, а строкой, поэтому, прежде чем складывать количество литров пива, нужно сначала преобразовать введенные строки в числа с помощью функции int().
Вообще, типов переменных много, но суть ты уловил — чтобы производить с переменными какие‑то действия, нужно их сначала привести к одному типу — к строковому, или к числовому, или еще к какому‑нибудь. Если с этим не заморачиваться, Python сложит не числа, а строки и введенные 2 и 3 литра пива в сумме дадут не 5, а целых 23. Хорошо бы так было в реальности!
Вот еще примерчик, рассчитывающий, сколько тебе еще пить пиво, исходя из средней продолжительности жизни в России:
Условия
В основе любой программы лежат условия. В зависимости от того, выполняются они или не выполняются, программа может пойти по одному или другому пути. Представь, ты едешь на машине и смотришь на часы: если уже есть десять вечера, то поворачиваешь домой, если нет, то можно заехать в гости. Точно так же работает и программа: проверяет какое‑то значение и сворачивает туда или сюда и выполняет соответствующий кусочек кода.
Блоки кода в Python отделаются отступами. Отступ на самом деле может быть любым, например некоторые предпочитают использовать вместо четырех пробелов клавишу Tab. Главное — не смешивать в одной программе отступы разного типа. Если уж начал использовать четыре пробела, то используй по всей программе, а то Python будет на тебя ругаться и унижать.
Еще один важный момент здесь — это знак равенства в условии. Он пишется как двойное «равно» ( == ) и этим отличается от присвоения — одинарного «равно».
Функция lower(), прежде чем сравнивать условие, делает все буквы в строке маленькими, потому что глупый юзер может ввести слово YES с горящим Caps Lock, и это надо предусмотреть заранее.
На самом деле lower( ) — не просто функция, а метод класса string (строка). Именно поэтому он вызывается через точку после переменной, которая содержит строку. О классах и методах мы поговорим как‑нибудь в другой раз, а пока просто запомни, что некоторые функции вызываются таким образом.
Как выполнить пошаговую отладку?
почему он не выводит?
Добавлено через 1 минуту
А как запустить с дебагером, интерпритатором на питоне?
Добавлено через 20 секунд
Как запустить с интерпритатором на питоне пошагово?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как сделать пошаговую отладку в С++ Builder?
Как сделать пошаговую отладку в С++ Builder?
Как проводить пошаговую отладку программы на СИ в среде Dev-C
Добрый день, я до этого писал программки в VBA в Excel, но стало не хватать скорости для обсчета.
как в C++ Builder 5.0 под Windows XP запустить пошаговую отладку dll?
Помогите пожалуйста решить следующую проблему: как в C++ Builder 5.0 под Windows XP запустить.
Как выполнить отладку javascript, jquery
Иногда сайт не работает в браузере клиента, например, не срабатывает ajax запрос. Как узнать, в.
Добавлено через 5 минут
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Разработать командный (процедурный) файл.Выполнить его отладку и тестирование
Здравствуйте! Помогите, пожалуйста. Нужно разработать командный (процедурный) файл согласно.
Как сделать пошаговую выбору из базы MS Access
Есть база из нее нужно выбрать строки через определенный интервал. Например, если шаг для выборки.
Использование отладчика Python
В разработке программного обеспечения отладка – это процесс поиска и решения проблем, препятствующих правильной работе программного обеспечения.
Встроенный отладчик Python предоставляет специальную среду для поиска багов в программах Python. Отладчик поддерживает установку условных точек останова, пошаговое или построчное выполнение исходного кода, проверку стека и многое другое.
Интерактивное взаимодействие с отладчиком Python
Отладчик входит в стандартную установку Python как модуль pdb. Он расширяемый, его можно использовать как класс Pdb.
Для начала создайте простую программу looping.py с глобальными переменными, функцией, которая создаёт вложенный цикл, и конструкцией if __name__ == ‘__main__’: для вызова функции nested_loop().
num_list = [500, 600, 700] alpha_list = [‘x’, ‘y’, ‘z’] def nested_loop():
for number in num_list:
print(number)
for letter in alpha_list:
print(letter)
if __name__ == ‘__main__’:
nested_loop()
Запустите программу в отладчике Python.
Команда вернёт следующий результат:
> /Users/8host/looping.py(1) ()
-> num_list = [500, 600, 700] (Pdb)
Первая строка вывода содержит имя текущего модуля ( ), путь к каталогу и номер строки (в данном случае это 1, но при наличии комментариев или неисполняемых строк номер будет выше). Вторая строка показывает текущую строку исходного кода, которая была выполнена (pdb предоставляет интерактивную консоль для отладки). Вы можете использовать команду help, чтобы узнать другие команды; чтобы узнать больше о конкретной команде, введите:
Обратите внимание, что консоль pdb отличается от интерактивной оболочки Python.
Отладчик Python автоматически запустится, когда он достигнет конца проверяемой программы. Чтобы закрыть консоль pdb, введите команду quit или exit. Чтобы явно перезапустить программу, используйте команду run.
Перемещение по программе
При работе с программами в отладчике Python для перемещения по коду используются команды list, step и next. Рассмотрим эти команды подробнее.
Команда list позволяет получить контекст текущей строки. К примеру, в случае с первой строкой программы looping.py, (num_list = [500, 600, 700]) результат будет выглядеть так:
Это довольно простая и короткая программа, потому команда вернула почти все её строки. Без аргументов команда list предоставляет 11 строк вокруг текущей строки. Однако вы также можете указать строки, которые нужно отобразить.
(Pdb) list 3, 7
3
4
5 def nested_loop():
6 for number in num_list:
7 print(number)
(Pdb)
Аргументы list 3, 7 выведут фрагмент с 3 по 7 строку программы.
Построчное перемещение по программе выполняется с помощью step или next.
(Pdb) step
> /Users/8host/looping.py(2) ()
-> alpha_list = [‘x’, ‘y’, ‘z’] (Pdb)
(Pdb) next
> /Users/8host/looping.py(2) ()
-> alpha_list = [‘x’, ‘y’, ‘z’] (Pdb)
Команда step останавливается на заданной функции, а команда next выполняет переданную ей функцию и останавливается на следующей строке.
К примеру, команда step выполнит итерацию по циклам, когда она дойдет до выполнения функции. Она покажет, что именно делает цикл: сначала она выведет число с помощью print(number), а затем выведет буквы с помощью print(letter).
(Pdb) step
> /Users/8host/looping.py(5) ()
-> def nested_loop():
(Pdb) step
> /Users/8host/looping.py(11) ()
-> if __name__ == ‘__main__’:
(Pdb) step
> /Users/8host/looping.py(12) ()
-> nested_loop()
(Pdb) step
—Call—
> /Users/8host/looping.py(5)nested_loop()
-> def nested_loop():
(Pdb) step
> /Users/8host/looping.py(6)nested_loop()
-> for number in num_list:
(Pdb) step
> /Users/8host/looping.py(7)nested_loop()
-> print(number)
(Pdb) step
500
> /Users/8host/looping.py(8)nested_loop()
-> for letter in alpha_list:
(Pdb) step
> /Users/8host/looping.py(9)nested_loop()
-> print(letter)
(Pdb) step
x
> /Users/8host/looping.py(8)nested_loop()
-> for letter in alpha_list:
(Pdb) step
> /Users/8host/looping.py(9)nested_loop()
-> print(letter)
(Pdb) step
y
> /Users/8host/looping.py(8)nested_loop()
-> for letter in alpha_list:
(Pdb)
Команда next выполнит функцию, не показывая пошагово каждого этапа процесса. Остановите текущую сессию с помощью команды exit и снова запустите отладчик.
Запустите команду next:
(Pdb) next
> /Users/8host/looping.py(5) ()
-> def nested_loop():
(Pdb) next
> /Users/8host/looping.py(11) ()
-> if __name__ == ‘__main__’:
(Pdb) next
> /Users/8host/looping.py(12) ()
-> nested_loop()
(Pdb) next
500
x
y
z
600
x
y
z
700
x
y
z
—Return—
> /Users/8host/looping.py(12) ()->None
-> nested_loop()
(Pdb)
Перемещаясь по коду программы, вы можете изучит значения переменных с помощью команды pp, которая предоставит структурную распечатку операторов при помощи модуля pprint.
(Pdb) pp num_list
[500, 600, 700] (Pdb)
Большинство команд pdb имеют более короткие псевдонимы. Для команды step это s, а для next – n. Команда help выведет список доступных псевдонимов.
Чтобы вызвать последнюю вызванную команду, просто нажмите клавишу Enter в командной строке.
Точки останова
Как правило, код программ гораздо объёмнее, чем код в приведённом выше примере. Чтобы просмотреть определённые функции, строки или фрагменты программы, используйте команду break. Она устанавливает точки останова, и отладчик будет проверять код только внутри этих точек.
Отладчик присваивает точкам останова порядковые номера, начиная с 1. По этим номерам на точки можно ссылаться.
Точки останова можно разместить в строках с определённым номером с помощью синтаксиса
(Pdb) break looping.py:5
Breakpoint 1 at /Users/8host/looping.py:5
(Pdb)
Чтобы удалить все текущие точки останова, введите clear и y.
Также точку останова можно разместить по функции:
(Pdb) break looping.nested_loop
Breakpoint 1 at /Users/8host/looping.py:5
(Pdb)
Чтобы удалить текущую точку, введите clear и y.
Также можно создать условие:
(Pdb) break looping.py:7, number > 500
Breakpoint 1 at /Users/8host/looping.py:7
(Pdb)
Если сейчас запустить команду continue, программа остановится, когда значение number x станет больше 500 (то есть, во время второй итерации цикла).
(Pdb) continue
500
x
y
z
> /Users/8host/looping.py(7)nested_loop()
-> print(number)
(Pdb)
Вывести список точек останова можно с помощью команды break без аргументов.
(Pdb) break
Num Type Disp Enb Where
1 breakpoint keep yes at /Users/8host/looping.py:7
stop only if number > 500
breakpoint already hit 2 times
(Pdb)
Чтобы отключить точки останова, используйте команду disable и укажите номер точки. Добавьте новую точку и отключите первую:
(Pdb) break looping.py:11
Breakpoint 2 at /Users/8host/looping.py:11
(Pdb) disable 1
Disabled breakpoint 1 at /Users/8host/looping.py:7
(Pdb) break
Num Type Disp Enb Where
1 breakpoint keep no at /Users/8host/looping.py:7
stop only if number > 500
breakpoint already hit 2 times
2 breakpoint keep yes at /Users/8host/looping.py:11
(Pdb)
Включить точку можно с помощью команды enable, а удалить – с помощью clear.
(Pdb) enable 1
Enabled breakpoint 1 at /Users/8host/looping.py:7
(Pdb) clear 2
Deleted breakpoint 2 at /Users/8host/looping.py:11
(Pdb)
Точки останова в pdb предоставляют большой контроль над кодом программы. Отладчик может игнорировать точки останова во время текущей итерации программы с помощью команды ignore (например, ignore 1), запускать действия, происходящие в точке останова и создавать временные точки останова (команда tbreak ), которые будут автоматически сброшены после первой проверки.
Интеграция отладчика pdb в программу
Чтобы запустить сеанс отладки, импортируйте модуль pdb и добавьте функцию pdb.set_trace () перед строкой, с которой нужно начать проверку.
В приведенную выше программу можно добавить оператор import и функцию, которая запустит отладчик. Например, добавьте его перед вложенным циклом.
# Import pdb module
import pdb
num_list = [500, 600, 700] alpha_list = [‘x’, ‘y’, ‘z’] def nested_loop():
for number in num_list:
print(number)
# Trigger debugger at this line
pdb.set_trace()
for letter in alpha_list:
print(letter)
if __name__ == ‘__main__’:
nested_loop()
Добавив отладчик в код, не нужно запускать программу особенным образом или устанавливать точки останова.
Импорт модуля pdb и функция pdb.set_trace() позволяют запустить программу как обычно.
Изменение потока выполнения программы
Отладчик Python позволяет изменять поток программы во время выполнения с помощью команды jump. Это позволяет пропустить фрагменты программы, предотвратить запуск какого-либо кода или вернуться назад, чтобы снова запустить код.
Рассмотрим эту функцию на примере небольшой программы, которая создает список букв, содержащихся в строке 8host = “8host”:
def print_8host():
8host_list = [] 8host = «8host»
for letter in 8host:
8host_list.append(letter)
print(8host_list)
if __name__ == «__main__»:
print_8host()
python letter_list.py
[‘8’] [‘8’, ‘h’] [‘8’, ‘h’, ‘o’] [‘8’, ‘h’, ‘o’, ‘s’] [‘8’, ‘h’, ‘o’, ‘s’, ‘t’]
С помощью отладчика Python можно изменить выполнение программы, пропустив один цикл. Это прервёт цикл for.
Читайте также: Циклы for
В этой сессии отладчик прервёт обработку кода на строке 5, а затем возобновит процесс обработки (также он выведет некоторые значения, чтобы вы могли отслеживать действия). Затем команда jump перепрыгнет на строку 6. В этот момент переменная letter имеет значение а, но код, который отвечает за её отображение, пропущен. Затем точка останова отключается с помощью команды continue, потому значение a не включено в вывод.
Закройте сессию и перезапустите отладчик. Попробуйте вернуться к предыдущему фрагменту программы с помощью jump. Например, можно дважды запустить первую итерацию цикла for.
В приведённой выше сессии отладки выполнение кода остановилось на строке 6, затем программа вернулась к строке 5 и продолжила обработку. Затем точка останова в строке 6 была отключена, после чего программа продолжила выполнение. Результат показывает два значения ‘8’ в 8host_list.
Некоторые пропуски и изменения потока программы предотвращает сам отладчик (особенно это касается тех фрагментов кода, которые определяют значения в дальнейшем потоке программы). К примеру, вы не сможете пропустить функции, если аргументы не определены, перейти к середине блока try:except или пропустить блок finally.
Общие команды pdb
Здесь вы найдёте таблицу полезных команд pdb, которые часто используются при работе с отладчиком Python.
Команда
Действие
Больше информации можно найти в документации отладчика Python.
Заключение
Отладка – важный этап разработки любого программного обеспечения. Встроенный отладчик pdb предоставляет интерактивную среду для обнаружения и отладки неисправностей и ошибок в коде программы.
🐍 Самоучитель для начинающих: как освоить Python с нуля за 30 минут?
Прочитав статью, вы познакомитесь с особенностями языка Python, основными типами данных, условными операторы, циклами и работой с файлами. В заключении приведена подборка литературы и каналов на YouTube, а также бесплатных курсов.
Установка Python
Python в Ubuntu предустановлен. Чтобы узнать версию Python, откроем терминал комбинацией клавиш Ctrl + Alt + T и введем следующую команду:
Для Windows нужно скачать Python с официального сайта и установить как обычную программу.
Установка редактора кода
Для работы нам понадобится редактор кода (IDE). Самые популярные:
Для установки Atom в Ubuntu введем в терминале:
Рис. 1. Страница установки Atom для Windows
Создание проекта
Создадим проект, в котором будем хранить код и другие файлы. Для этого перейдем во вкладку File → Add Project Folder и выберем любую свободную папку.
Онлайн-редакторы кода
Если под рукой только смартфон, воспользуемся бесплатными онлайн-редакторами кода:
1. Синтаксис
Python использует отступы, чтобы обозначить начало блока кода:
Python выдаст ошибку, если вы пропустите отступ:
Рекомендуется использовать отступ, равный четырем пробелам.
2. Hello, World
Напишем в example.py следующую строчку:
У нас установлен плагин run-python-simply и запустить код мы можем двумя способами:
После запуска кода появится окно терминала с результатом или ошибкой.
‘Hello, World’ – строка (заключена в кавычки).
Python – язык с динамической типизацией, то есть нам не нужно заранее объявлять тип переменной, является ли она строкой, числом и так далее.
О функциях поговорим в конце статьи, сейчас разберемся со строками и другими типами данных.
3. Типы данных
3.1. Строки
Строка – упорядоченная последовательность символов, заключенная в одинарные или двойные кавычки:
Операции со строками
Изменение регистра первого символа к верхнему регистру с помощью метода title() :
Преобразование всех символов к верхнему и нижнему регистру методами upper() и lower() соответственно:
Объединение строк (конкатенация). Строки объединяются с помощью знака сложения + :
Вычисление длины строки. Чтобы определить длину строки воспользуемся встроенной функцией len() (сокращённое от англ. length):
Рис. 2. Доступ к элементу строки по индексу в Python
Для получения элемента по индексу воспользуемся квадратными скобками [] :
В предыдущем примере по индексу мы получали один элемент строки. По срезу можно получить несколько элементов:
Как формируется срез:
Получим с помощью среза последний элемент:
Все элементы, кроме первого:
Все элементы, кроме последнего:
Создание копии строки через срез:
Методом replace() заменим символы в строке:
Преобразование строки в список индивидуальных символов:
3.2. Числа
Целые числа (int) не имеют дробной части:
Число с плавающей точкой (float) имеет дробную часть:
Операции над числами:
Порядок операций. Выражение в скобках будет просчитываться в первую очередь:
3.3. Списки
Список (англ. list) – набор упорядоченных элементов произвольных типов. Списки задаются квадратными скобками [] и содержат объекты любого типа: строки, числа, другие списки и так далее. Элементы можно менять по индексу.
Создадим список animals и выведем его на экран:
Обратимся к второму элементу списка:
Чтобы изменить элемент списка, обратимся к нему по индексу и присвоим новое значение:
Для добавления элемента в конец списка воспользуемся методом append() :
Метод insert() вставляет элемент по индексу:
Для удаления элемента из списка, обратимся к элементу по индексу, используя команду del :
Другой способ удаления – метод pop() :
В двух предыдущих примерах мы удаляли элемент по его индексу. Теперь удалим элемент по его значению с помощью метода remove() :
Чтобы упорядочить список по алфавиту используем метод sort() :
Список в обратном порядке выводится методом reverse() :
Для определения длины списка воспользуемся функцией len() :
3.4. Кортежи
Кортеж (англ. tuple), как и список хранит элементы, только в отличие от списка, элементы кортежа не изменяются. Кортеж задается круглыми скобками () :
Одноэлементный кортеж задается с помощью запятой после первого элемента. Без запятой получим список. Чтобы узнать какой тип данных мы получаем на выходе воспользуемся функцией type() :
Чтобы создать список из элементов кортежа применим функцию list() :
3.5. Словари
Получим по ключам соответствующие значения из словаря dictionary :
Чтобы добавить новую пару «ключ-значение» используем следующую запись словарь[‘новый_ключ’] = новое_значение :
Изменение существующего значения похоже на добавление нового значения словарь[‘существующий_ключ’] = новое_значение :
Командой del можно удалить ключ со значением:
3.6. Множества
Множества – неупорядоченные последовательности не повторяющихся элементов. Множество задается чрез фигурные скобки <> :
Операции над множествами:
3.7. Файлы
example.txt – путь к файлу и его имя. В нашем случае файл расположен в папке с выполняемой программой.
r – режим работы « только чтение».
Попробуем дозаписать числа в конец файла:
numbers – список чисел.
a – режим записи «в конец текстового файла».
\n – перенос на новую строчку.
Без переноса строки результат будет следующий:
4. Ввод данных
Для ввода данных применяется функция input() :
5. Условные инструкции
Оператор if выполняет код в зависимости от условия. Проверим, если число три меньше пяти, то выведем на экран слово true :
elif = else + if – код выполняется, если предыдущее условие ложно, а текущее истинно:
6. Цикл while
Напишем цикл, который 5 раз выведет на экран слово hello :
while – обозначение цикла.
Бесконечный цикл записывается с помощью while True :
7. Цикл for
Цикл for перебирает элементы последовательности:
Второй вариант записи:
8. Функции
a и b – аргументы функции.
return возвращает значение функции.
9. Модули
Модуль – файл, содержащий функции, классы и данные, которые можно использовать в других программах.
Это был импорт отдельной функции. Теперь импортируем весь модуль и обратимся к функции через модуль.имя_функции() :
10. Комментарии
Комментирование кода помогает объяснить логику работы программы. Однострочный комментарий начинается с хеш-символа # :
Многострочный комментарий заключается с обеих сторон в три кавычки:
Литература
Шпаргалки
YouTube-каналы и курсы
Бесплатные курсы на русском и английском языках в YouTube и на образовательных ресурсах:
Python в «Библиотеке Программиста»
Мы кратко познакомились с основными понятиями Python: команды, функции, операторы и типы данных. У этого языка низкий порог вхождения, простой синтаксис, поэтому вероятность освоить его человеку, который никогда не занимался программированием – высокая (по моей субъективной оценке – 90%).
На Python создают прикладные приложения, пишут тесты и бэкенд веб-приложений, автоматизируют задачи в системном администрировании, его используют в нейронных сетях и анализе больших данных. Язык можно изучить самостоятельно, но на это придется потратить немало времени. Если вы хотите быстро понять основы программирования на Python, обратите внимание на онлайн-курс «Библиотеки программиста». За 30 уроков (15 теоретических и 15 практических занятий) под руководством практикующих экспертов вы не только изучите основы синтаксиса, но и освоите две интегрированные среды разработки (PyCharm и Jupyter Notebook), работу со словарями, парсинг веб-страниц, создание ботов для Telegram и Instagram, тестирование кода и даже анализ данных. Чтобы процесс обучения стал более интересным и комфортным, студенты получат от нас обратную связь. Кураторы и преподаватели курса ответят на все вопросы по теме лекций и практических занятий.