Основные алгоритмические конструкции языка python

Практическое занятие 1: Основные алгоритмические конструкции языка Python¶

Цель: Вспомнить основные алгоритмические конструкции¶

Задачи:¶

  1. Вспомнить основные определения
  2. Познакомиться с инструментом Jupyter Notebook.
  3. Вспомнить синтаксис и основные алгоритмические конструкции языка Python на основе библиотеки ColabTurtle.
  4. Попрактиковаться в написании кода на Python

Основные определения¶

Алгоритм¶

В основе программирования лежит понятие алгоритма. Если кратко, то алгоритм — это вычислимая функция. Если вам не понятно, давайте обратимся к школьному определению:

Алгоритм — это:

  1. последовательность команд
  2. на формальном языке исполнителя,
  3. приводящая к цели
  4. за конечное время.

Алгоритмические конструкции¶

  1. Линейный алгоритм (последовательное выполнение)
  2. Цикл
  3. Ветвление (условное выполнение)

Практические занятия будут проходить в среде Jupyter notebook, с использованием языка программирования Python.

Jupyter Notebook

Jupyter Notebook является мощным и удобным инструментом анализа данных, а также отлично подходит для практикума программирования на Python! Более подробную информацию Вы можете получить на странице проекта, а также воспользовавшись поисковой системой.

Python

Далее мы будем использовать только версию 3 языка

Снова «Hello world»¶

Простота языка Python хорошо видна на примере традиционной первой программы всех программистов (выполните ее, нажав на кнопку Run):

Сравним ее с той же программой на языке C:

#include int main(int argc, char* argv[])  printf("Hello, World!\n"); return 0; > 

Лаконичность кода Python становится еще более очевидной из сравнения основных алгоритмических конструкций языка Python и, например, языка C:

Язык Python — цикл for:

sum = 0 for i in range(5): sum += i print("sum = ", sum) 

Язык C — цикл for:

#include int sum = 0; int main(int argc, char* argv[])  for(int i = 0; i  5; i++)  sum += i; > printf("sum = %d", sum); return 0; > 

Язык Python — ветвление:

a = 16 b = 7 if a > b: max = a else: max = b print("max = ", max) 

Язык C — ветвление:

#include int max, a = 16, b = 7; int main(int argc, char* argv[])  if(a > b)  max = a; > else  max = b; > printf("max = %d", max); return 0; > 

Синтаксис Python с Черепашкой

Вспоминать синтаксис и основные алгоритмические конструкции мы будем на базе языка Python с помощью Черепашки — исполнителя, реализованного в модуле ColabTurtle. В интерактивном режиме, при запуске программы на компьютере пользователя, должен быть использован оригинальный модуль turtle. Он подключается так:

Однако, на наших практических занятиях мы будем пользоваться модулем ColabTurtle, который работает прямо в Jupyter Notebook и в Google Colab. Он подключается так:

from ColabTurtle.Turtle import * 

Для того, чтобы он заработал, нужно один раз установить этот модуль вот такой командой (вам необходимо выполнить следующую ячейку):

Collecting ColabTurtle Downloading ColabTurtle-2.1.0.tar.gz (6.8 kB) Using legacy 'setup.py install' for ColabTurtle, since package 'wheel' is not installed. Installing collected packages: ColabTurtle Running setup.py install for ColabTurtle: started Running setup.py install for ColabTurtle: finished with status 'done' Successfully installed ColabTurtle-2.1.0
WARNING: You are using pip version 21.2.3; however, version 22.2.2 is available. You should consider upgrading via the 'C:\Users\ICPC-NB-XX\AppData\Local\Programs\Python\Python310\python.exe -m pip install --upgrade pip' command.

Код ниже подключает фукции управления Черепашкой из только что установленной библиотеки — выполните его:

from ColabTurtle.Turtle import * 

Команды исполнителя Черепаха¶

Модуль ColabTurtle содержит набор функций, позволяющих управлять Черепашкой — исполнителем, рисующим на экране. Основные команды нашей Черепашки те же, что и у классического исполнителя, а именно:

Команда Действие
forward(X) Пройти вперёд X пикселей
backward(X) Пройти назад X пикселей
left(X) Повернуться налево на X градусов
right(X) Повернуться направо на X градусов
penup() Не оставлять след при движении
pendown() Оставлять след при движении
shape(X) Изменить значок черепахи (“turtle”, “circle”)
color() Установить цвет
width() Установить толщину линии
goto(x, y) Переместить черепашку в точку (x, y)

С полным набором команд можно ознакомиться по ссылке

Например, следующая программа рисует букву S выполните ее:

initializeTurtle() speed(3) pensize(3) right(90) forward(50) left(90) forward(50) left(90) forward(50) right(90) forward(50) right(90) forward(50) 

Приведенный выше код является примером линейного алгоритма — команды выполняются друг за другом, каждая только один раз.

Задачи:¶

  1. Задача 1: Нарисуйте квадрат
  2. Задача 2: Нарисуйте прямоугольник
  3. Задача 3: Нарисуйте прямоугольный треугольник
  4. Задача 4: Нарисуйте равностороннй треугольник
  5. Задача 5: Напишите ФБВТ Для этого добавьте в ячейки ниже соответствующие программы и выполните их.

Циклы и вложенные циклы¶

Одна из замечательных возможностей программирования — циклы, которые дают возможность зацикливать выполнение команд.

Для это используется две синтаксические конструкции языка: цикл while и цикл for . На этом занятии мы познакомимся с простым циклом for.

Цикл for состоит из заголовка и тела цикла:

for счётчик in значения, которые, нужно, перебрать: команды тела цикла сдвинуты вправо команда_вне_цикла 

Команды тела цикла выполняются столько раз, сколько значений требуется перебрать в списке из заголовка. При этом текущее значение доступно в счётчике цикла.

Команды тела цикла должны быть сдвинуты вправо на 4 пробела. А первая же команда без отступа — это уже команда за пределами цикла, а значит её выполнение не будет повторяться.

Циклы удобны для рисования многоугольников. Нарисуем шестиугольник:

from ColabTurtle.Turtle import * initializeTurtle() speed(5) for step in 1, 2, 3, 4, 5, 6, 7, 8: forward(120) right(360 / 8) print("Это восьмиугольник.") 

Обратите внимание, что команды движения вперёд и поворота направо написаны один раз, а выполнились восемь раз. Однократное выполнение команд тела цикла называется итерацией. Допустимо говорить так: «в цикле восемь итераций«, «на первой итерации рисуется первое ребро«, «на последней итерации ломаная замыкается в восьмиугольник«. Также мы увидели результат функции печати текста print() .

from ColabTurtle.Turtle import * initializeTurtle() speed(5) for side in 1, 2, 3: forward(120) left(120) print("Это треугольник.") 
Это треугольник. Это треугольник. Это треугольник.

В программе выше мы подвинули функцию print() вправо, и теперь она стала частью тела цикла. Поэтому мы и видим надпись «Это треугольник.» три раза.

Ниже пример с простым многоугольником. Обратите внимание, что форма фигуры зависит не только и не столько от количества итераций, сколько от угла поворота:

from ColabTurtle.Turtle import * initializeTurtle() speed(5) for step in range(10): forward(120) right(45) 

Угол 45 градусов является «внешним» углом восьмиугольником, поэтому получается восьмиугольник, хотя итераций и 10 штук. В данной программе количество итераций формируется с помощью функции range(10) — функция формирует последовательность 0, 1, 2, . 9, по которой «пробегается» переменная цикла step.

Задачи:¶

  1. Задача 6: Нарисуйте квадрат
  2. Задача 7: Нарисуйте прямоугольник
  3. Задача 8: Нарисуйте окружность. Воспользуйтесь тем фактом, что правильный многоугольник с большим числом сторон будет выглядеть как окружность

Для этого добавьте в ячейки ниже соответствующие программы и выполните их.

Вложенные циклы¶

Теперь давайте посмотрим что будет, если поместить цикл из программы, рисующей треугольник, в программу для восьмиугольника. Это называется вложенные циклы:

from ColabTurtle.Turtle import * initializeTurtle() speed(5) for step in range(8): forward(60) right(360 / 8) for side in range(3): forward(60) left(120) 

Задачи:¶

  1. Задача 9: Нарисуйте 10 вложенных квадратов
  2. Задача 10: Нарисуйте спиральСм. теорию
  3. Задача 11: Нарисуйте «квадратную» спираль

Для этого добавьте в ячейки ниже соответствующие программы и выполните их.

Условное выполнение действий¶

Как видите, программный код представляет из себя уже не простую последовательность команд, но может содержать и циклы, и вложенные циклы. Однако можно поставить выполнение какой-то команды на определённое условие, и выполнять только тогда, когда оно истинно.

Синтаксис условной команды (команды ветвления) таков: пишется оператор if , затем логическое условие, двоеточие, а затем сама команда или несколько команд, но все они должны быть сдвинуты на 4 пробела от уровня оператора if :

if условие + выполнения > 0: тут_условно_выполняющаяся_команда команда_вот_тут_выполняется = по-любому 

Обратите внимание, что первая же команда, которая не сдвинута на 4 пробела, выполняется всегда, без всяхких условий. Ниже программа, которая «отражает» Черепашку от горизонтальных стен — выполните программу и исследуйте используемые команды.

from ColabTurtle.Turtle import * initializeTurtle() speed(8) goto(300, 100) face(170) for step in range(200): forward(10) if getx()  0 or getx() > 800: face(180 - heading()) 

Источник

Введение в программирование на языке Python

Программа на языке Python может состоять из одного или нескольких модулей. Каждый модуль представляет собой текстовый файл в кодировке, совместимой с 7-битной кодировкой ASCII. Для кодировок, использующих старший бит, необходимо явно указывать название кодировки. Например, модуль, комментарии или строковые литералы которого записаны в кодировке KOI8 -R, должен иметь в первой или второй строке следующую спецификацию:

Благодаря этой спецификации интерпретатор Python будет знать, как корректно переводить символы литералов Unicode-строк в Unicode. Без этой строки новые версии Python будут выдавать предупреждение на каждый модуль, в котором встречаются коды с установленным восьмым битом.

О том, как делать программу модульной, станет известно в следующих лекциях. В примерах ниже используются как фрагменты модулей, записанных в файл, так и фрагменты диалога с интерпретатором Python. Последние отличаются характерным приглашением >>> . Символ решетка ( # ) отмечает комментарий до конца строки.

Программа на Python, с точки зрения интерпретатора, состоит из логических строк. Одна логическая строка, как правило, располагается в одной физической, но длинные логические строки можно явно (с помощью обратной косой черты) или неявно (внутри скобок) разбить на несколько физических:

print a, " - очень длинная строка, которая не помещается в", \ 80, "знакоместах"

Во всех примерах в основном используется «официальный» стиль оформления кода на Python в соответствии с документом «Python Style Guide «, который можно найти на сайте http://python.org

Основные алгоритмические конструкции

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

Последовательность операторов

Последовательные действия описываются последовательными строками программы. Стоит, правда, добавить, что в программах важны отступы, поэтому все операторы, входящие в последовательность действий, должны иметь один и тот же отступ:

a = 1 b = 2 a = a + b b = a - b a = a - b print (a, b)

Что делает этот пример? Проверить свою догадку можно с помощью интерактивного режима интерпретатора Python.

При работе с Python в интерактивном режиме как бы вводится одна большая программа, состоящая из последовательных действий. В примере выше использованы операторы присваивания и оператор print .

Оператор условия и выбора

Разумеется, одними только последовательными действиями в программировании не обойтись, поэтому при написании алгоритмов используется еще и ветвление:

Этот кусок кода на Python интуитивно понятен каждому, кто помнит, что if по-английски значит «если», а else — «иначе». Оператор ветвления имеет в данном случае две части, операторы каждой из которых записываются с отступом вправо относительно оператора ветвления. Более общий случай — оператор выбора — можно записать с помощью следующего синтаксиса (пример вычисления знака числа):

Стоит заметить, что elif — это сокращенный else if . Без сокращения пришлось бы применять вложенный оператор ветвления:

В отличие от оператора print , оператор if-else — составной оператор .

Источник

Читайте также:  Поиск во всех файлах питон
Оцените статью