Скачать презентацию Лаптева Наталия Николаевна natalia n lapteva gmail com http Скачать презентацию Лаптева Наталия Николаевна natalia n lapteva gmail com http

l1.ppt

  • Количество слайдов: 140

Лаптева Наталия Николаевна natalia. n. lapteva@gmail. com http: //psm 11 nir. blogspot. ru НИС Лаптева Наталия Николаевна natalia. n. lapteva@gmail. com http: //psm 11 nir. blogspot. ru НИС + НИР Лекция 1 Python. Интерпретатор. Переменные и значения. Ветвления. Циклы.

Этапы решения задачи • постановка задачи; • формализация задачи или выбор метода решения; • Этапы решения задачи • постановка задачи; • формализация задачи или выбор метода решения; • Поиск оптимального решения (построение/выбор и анализ алгоритма); • составление программы на языке программирования; • отладка и тестирование программы; • исполнение программы и анализ результатов.

 • Языки программирования – формальные языки, разработанные для записи выражений. • Отличия от • Языки программирования – формальные языки, разработанные для записи выражений. • Отличия от естественных языков – Аргументы из множества, интерпретируемого исполнителем – Расположенные в строго определенном порядке – Однозначность – Краткость – Буквальность

Языки • По типу трансляции – Ассемблеры (1: 1) – Компиляторы (src -> машинный Языки • По типу трансляции – Ассемблеры (1: 1) – Компиляторы (src -> машинный код, 1: n) – Интерпретаторы (построчное выполнение) Трансляция – перевод программы, написанной на языке программирования в исполняемый эквивалент

Языки • • • Ассемблеры Процедурные языки Объектно-ориентированные языки Функциональные языки Логические языки Сценарные Языки • • • Ассемблеры Процедурные языки Объектно-ориентированные языки Функциональные языки Логические языки Сценарные и скриптовые языки

 • Компиляция – Анализ, генерация промежуточного кода, оптимизация, генерация машинного кода • Интерпретация • Компиляция – Анализ, генерация промежуточного кода, оптимизация, генерация машинного кода • Интерпретация – Исполнение на виртуальной машине, работающей с командами высокого уровня – Диалоговый режим – Построчное выполнение

Python • Гвидо ван Россум • 1990/1991 • Язык высокого уровня • Интерпретируемый язык Python • Гвидо ван Россум • 1990/1991 • Язык высокого уровня • Интерпретируемый язык с динамической семантикой, поддерживающий как процедурную, так и объектноориентированную парадигмы

Python • Интерпретируемый язык • Динамическая типизация • Автоматическое управление памятью • Простой и Python • Интерпретируемый язык • Динамическая типизация • Автоматическое управление памятью • Простой и читаемый синтаксис • Высокоуровневые структуры данных • Высокая скорость разработки

Python • Язык общего назначения – Сценарии сборки – Графические приложения – Игры – Python • Язык общего назначения – Сценарии сборки – Графические приложения – Игры – Веб-сайты – Скрипты текстовой обработки – Youtube, Dropbox, EVE, Instagram, Bit. Torrent • Гибкий и расширяемый язык

Python • Модули и библиотеки • Py. Pi – репозиторий модулей для питона. • Python • Модули и библиотеки • Py. Pi – репозиторий модулей для питона. • Обращайте внимание на версию. Не очень хорошая совместимость «вниз» • Готовые решения и фреймворки (Django) • py 2 exe

Литература • Марк Лутц – Изучаем Python (4 -е издание) • Марк Лутц – Литература • Марк Лутц – Изучаем Python (4 -е издание) • Марк Лутц – Программируем на Python (4 -е издание) Том I / Том II (992 страницы каждый) • Бизли Д. – Python. Подробный справочник (4 -е издание) (858 страниц)

Python • Скрипт • Режим интерпретатора • IDE – IDLE – Py. Charm – Python • Скрипт • Режим интерпретатора • IDE – IDLE – Py. Charm – Py. Scripter

Режимы работы интерпретатора • Режим диалога с пользователем • Исполнение скриптового файла Режимы работы интерпретатора • Режим диалога с пользователем • Исполнение скриптового файла

Режим диалога с пользователем $ python Python 2. 4. 1 (#1, Apr 29 2005, Режим диалога с пользователем $ python Python 2. 4. 1 (#1, Apr 29 2005, 00: 28: 56) Type "help", "copyright", "credits" or "license" for more information. >>> print 1 + 1 2

Режим диалога с пользователем • С «>>>» начинается ввод команды • … - знак, Режим диалога с пользователем • С «>>>» начинается ввод команды • … - знак, что интерпретатор ожидает продолжения ввода команды • Результат – сразу • Вывод значений выражений • Выход Ctrl+Z

Файл скрипта • Расширение «. py» – psm 11. py • Исполняется интерпретатором Python Файл скрипта • Расширение «. py» – psm 11. py • Исполняется интерпретатором Python – Через параметр командной строки – Через IDE

IDLE • /lib/idle. bat IDLE • /lib/idle. bat

+/ • Режим диалога – Удобен для отладки – Моментальное исполнение • Сохранение скрипта +/ • Режим диалога – Удобен для отладки – Моментальное исполнение • Сохранение скрипта – Удобство правок и распространения – Сохранение для дальнейшего использования

Модель черного ящика входные данные преобразование в системе выходные данные Модель черного ящика входные данные преобразование в системе выходные данные

Этапы • Input: получить данные (ввод с клавиатуры, из файла, с другого устройства ввода) Этапы • Input: получить данные (ввод с клавиатуры, из файла, с другого устройства ввода) • Вычисления: выполнить обработку данных, проверить необходимые условия, подготовить output • Output: вывести данные пользователю (на экран, в файл или на другое устройство вывода)

Ошибки Человеческий фактор ведет к ошибкам • Синтаксические ошибки • Ошибки исполнения • Семантические Ошибки Человеческий фактор ведет к ошибкам • Синтаксические ошибки • Ошибки исполнения • Семантические ошибки

Синтаксические ошибки • Syntax errors • Программа выполнима только при корректном синтаксисе • В Синтаксические ошибки • Syntax errors • Программа выполнима только при корректном синтаксисе • В отличие от естественных языков – важна точность и однозначность команд исполнителю

Ошибки исполнения • Runtime errors • Возникает только при выполнении программы • Исключение (exception) Ошибки исполнения • Runtime errors • Возникает только при выполнении программы • Исключение (exception) • Требуют отдельной обработки

Семантические ошибки • Semantic errors • Программа запускается и выполняется корректно • но не Семантические ошибки • Semantic errors • Программа запускается и выполняется корректно • но не делает того, что требуется) • а делает что-то другое.

Поиск ошибок • Детективная и экспериментаторская работа! • Поэтапная разработка с отладкой каждого этапа Поиск ошибок • Детективная и экспериментаторская работа! • Поэтапная разработка с отладкой каждого этапа • На каждом шаге – у вас работающая программа, в которую далее вносятся правки Linus Torvalds: According to Larry Greenfield, “One of Linus’s earlier projects was a program that would switch between printing AAAA and BBBB. This later evolved to Linux. ” (The Linux Users’ Guide Beta Version 1)

“Hello, World!” на Pascal PRORGAM Hello (INPUT, OUTPUT); BEGIN WRITE(“Hello, World!”) END. “Hello, World!” на Pascal PRORGAM Hello (INPUT, OUTPUT); BEGIN WRITE(“Hello, World!”) END.

“Hello, World!” на C #include <stdio. h> int main(void) { printf( “Hello, World!” на C #include int main(void) { printf("Hello, World!n"); return 0; }

Hello, World! на Python print 'Hello, World!' Hello, World! на Python print 'Hello, World!'

Python: переменные и выражения Python: переменные и выражения

Значения и типы • Переменная это способ хранить и изменять некоторое значение в оперативной Значения и типы • Переменная это способ хранить и изменять некоторое значение в оперативной памяти • Переменная и значение не тождественны var ≠ val

Значение • Значение – то, с чем в конечном итоге оперирует программа • Значения Значение • Значение – то, с чем в конечном итоге оперирует программа • Значения бывают разных типов – Целые числа – Числа с плавающей запятой – Символы – Строки

Проверка типа >>> type(’Hello, World!’) <type ’str’> >>> type(17) <type ’int’> • Не все Проверка типа >>> type(’Hello, World!’) >>> type(17) • Не все действия, допустимые с одним типом будут допустимы с другим – Например, реверсирование строки имеет смысл, а реверсирование числа с плавающей запятой – нет.

Тип определяется форматом записи >>> type(17) <type ’int’> >>> type(3. 2) <type ’float’> >>> Тип определяется форматом записи >>> type(17) >>> type(3. 2) >>> type(’ 17’) >>> type(’ 3. 2’)

Переменная • Переменная это именованная область оперативной памяти, которая может хранить и изменять свое Переменная • Переменная это именованная область оперативной памяти, которая может хранить и изменять свое значение. • Т. е. символьное имя, по которому может быть получено значение.

В языках с четкой типизацией • Переменной изначально указывается тип значений, которые она может В языках с четкой типизацией • Переменной изначально указывается тип значений, которые она может принимать – var. A: integer; – user. Name: string;

down to Python • Python – язык с динамической типизацией • Переменная не имеет down to Python • Python – язык с динамической типизацией • Переменная не имеет объявления, отдельного от присвоения значения • Тип переменной определяется хранимым в конкретный момент значением • Тип переменной может меняться

>> n = 17 >>> pi =" src="https://present5.com/presentation/-76615853_329451923/image-37.jpg" alt="Присвоение >>> message = "What’s up? " >>> n = 17 >>> pi =" /> Присвоение >>> message = "What’s up? " >>> n = 17 >>> pi = 3. 14159 • Переменная «создается» в момент первого упоминания в любом месте кода

Тип переменной >>> type(message) <type ’str’> >>> type(n) <type ’int’> >>> type(pi) <type ’float’> Тип переменной >>> type(message) >>> type(n) >>> type(pi)

Имя переменной • Должно быть осмысленным • Связанным с ее значением в программе • Имя переменной • Должно быть осмысленным • Связанным с ее значением в программе • Python – регистрозависимый язык а ≠А, my. Var ≠ myvar • Не может начинаться с цифры • Не может совпадать с ключевым словом

Зарезервированные слова and def exec if not return assert del finally import or try Зарезервированные слова and def exec if not return assert del finally import or try break elif for in pass while class else from is print yield continue except global lambda raise

Выражения • Выражение – инструкция, которую может выполнить интерпретатор языка Python – Например, присвоение Выражения • Выражение – инструкция, которую может выполнить интерпретатор языка Python – Например, присвоение message = 'Hello, PS!' – Вывод print message

Скрипт • В самом простом случае – последовательность выражений print 1 x=2 print x Скрипт • В самом простом случае – последовательность выражений print 1 x=2 print x Output: 1 2

Интерпретатор/Скрипт • Интерпретатор позволяет вычислять значения • Скрипт – только выполнять выражения >>> message Интерпретатор/Скрипт • Интерпретатор позволяет вычислять значения • Скрипт – только выполнять выражения >>> message = 'Hello, World!' >>> message 'Hello, World!' >>> print message Hello, World!

Присваивание vs Действие a=5 print a a=a+1 print a ----- a=5 print a + Присваивание vs Действие a=5 print a a=a+1 print a ----- a=5 print a + 1 print a -----

Присваивание vs Действие a=5 print a a=a+1 print a ----5 6 a=5 print a Присваивание vs Действие a=5 print a a=a+1 print a ----5 6 a=5 print a + 1 print a ----5 6 5

Одновременное присваивание >>>a, b, c = 1, 3, 14. 3 >>>print b, c, a Одновременное присваивание >>>a, b, c = 1, 3, 14. 3 >>>print b, c, a ?

Одновременное присваивание >>>a, b, c = 1, 3, 14. 3 >>>print b, c, a Одновременное присваивание >>>a, b, c = 1, 3, 14. 3 >>>print b, c, a 3 14. 3 1

Операторы и операнды • Оператор – специальный символ, обозначающий вычисление, действие над операндами или Операторы и операнды • Оператор – специальный символ, обозначающий вычисление, действие над операндами или выражение 20 + 32 #сложение hour - 1 #вычитание minute / 60 #целочисленное деление 5 ** 2 #возведение в степень 5 % 2 #взятие остатка hour * 60 + minute #выражение (5 + 9) * (15 - 7) #выражение с изменением порядка

Порядок операций • • • Скобки ** (2**1 + 1 = 3, 3*1**3 = Порядок операций • • • Скобки ** (2**1 + 1 = 3, 3*1**3 = 3) * , /, % +и– равные по приоритету – слева направо.

Операции со строками • Конкатенация (+) fruit = 'banana' baked. Good = ' nut Операции со строками • Конкатенация (+) fruit = 'banana' baked. Good = ' nut bread' print fruit + baked. Good • Повтор (*) >>>print 'Fun' *3 Fun

Композиция Вывод и вычисление: print ’Number of minutes since midnight: ’, hour*60+minute Вычисление и Композиция Вывод и вычисление: print ’Number of minutes since midnight: ’, hour*60+minute Вычисление и присваивание: percentage = (minute * 100) / 60 Композиция возможна только в правой части выражения

Комментарии #комментарий Код #комментарий Комментарии #комментарий Код #комментарий

Соглашение о кодировании • PEP 8 • https: //drive. google. com/file/d/0 BZV 6 AFu. Соглашение о кодировании • PEP 8 • https: //drive. google. com/file/d/0 BZV 6 AFu. Hdpsb. Xl 2 LVh. PQ 0 h. Cd. E 0/edit? usp =sharing

Ввод и вывод данных print '%c %c %c' % (1, 3, 2) print '%c Ввод и вывод данных print '%c %c %c' % (1, 3, 2) print '%c %c %c' % (7, 7, 7)

Вывод данных • Вычисление выражения • Оператор print Вывод данных • Вычисление выражения • Оператор print

Format Подстановка значений переменных в строки student = 'Иванов' grade = 'отл. ' print Format Подстановка значений переменных в строки student = 'Иванов' grade = 'отл. ' print 'Cтудент {0} получил {1}'. format(student, grade) • {0} и {1} = группы подстановки для переменных из списка параметров метода format • Количество параметров >= количеству групп • Параметром может быть выражение или величина

Ввод данных • INPUT – ввод строки с автоматическим определением типа данных • RAW_INPUT Ввод данных • INPUT – ввод строки с автоматическим определением типа данных • RAW_INPUT – ввод данных в строковый формат

Input >>> a = input() 123 >>> type(a) <type 'int'> >>> a = input() Input >>> a = input() 123 >>> type(a) >>> a = input() '123' >>> type(a) >>> a = input() qwe Name Error ‘qwe’ is not defined

raw_input >>> a = raw_input() 123 >>> type(a) <type 'str'> >>>print a '123' >>> raw_input >>> a = raw_input() 123 >>> type(a) >>>print a '123' >>> a = raw_input() '123' >>> type(a) >>>print a "'123'"

Аннотированный ввод >>> a = raw_input('Your name: ') Your name: _ Аннотированный ввод >>> a = raw_input('Your name: ') Your name: _

Логические выражения • Логическое выражение может иметь два значения – Истина ( True) – Логические выражения • Логическое выражение может иметь два значения – Истина ( True) – Ложь (False)

Обращайте внимание • Ключевым словом является True, а не true, False, а не false Обращайте внимание • Ключевым словом является True, а не true, False, а не false • x = True # ok • x = true – Name. Error: name ‘true’ is not deffined

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

Операторы сравнения • • • == != > < >= <= равенство не равенство Операторы сравнения • • • == != > < >= <= равенство не равенство больше меньше больше или равно меньше или равно

Например, >>> 5 == 5 True >>> 5 == 6 False Например, >>> 5 == 5 True >>> 5 == 6 False

 • Сравнивать можно не только непосредственные значения, но и переменные >>> x = • Сравнивать можно не только непосредственные значения, но и переменные >>> x = 5 >>> x == 5 True >>> x == 6 False

А так же переменные между собой x != y # x не равно y А так же переменные между собой x != y # x не равно y x > y # x больше y x < y # x меньше y x >= y # x больше или равен y x <= y # x меньше или равен y

Обращайте внимание • == оператор сравнения, • = оператор присваивания Обращайте внимание • == оператор сравнения, • = оператор присваивания

Обращайте внимание • x == y оператор сравнения, – Возвращает True или False • Обращайте внимание • x == y оператор сравнения, – Возвращает True или False • x=y оператор присваивания – Всегда возвращает True и изменяет значение переменной, указанной слева

== / = • При сравнении значения переменной с значением выражения можно использовать формат == / = • При сравнении значения переменной с значением выражения можно использовать формат записи вида >>> 4 == х False >>> 4 = x Syntax. Error: can’t assign to literal

Обращайте внимание • Операторы >= и <= не имеют обратной формы записи • => Обращайте внимание • Операторы >= и <= не имеют обратной формы записи • => и =<

Логические операторы • not • and • or - унарный оператор - бинарные операторы Логические операторы • not • and • or - унарный оператор - бинарные операторы

not • Инвертирует значение логического выражения • x = True • y = not not • Инвертирует значение логического выражения • x = True • y = not x # False

AND • Логическое И • Истинно, только когда истинны оба операнда • False and AND • Логическое И • Истинно, только когда истинны оба операнда • False and False • False and True False • True and True

OR • Логическое ИЛИ • Истинно, если хотя бы один из операндов равен истине OR • Логическое ИЛИ • Истинно, если хотя бы один из операндов равен истине • False or False • False or True • True or False True • True or True

Особенность питона • Любое ненулевое значение воспринимается как истина. Особенность питона • Любое ненулевое значение воспринимается как истина.

>>> x = 5 >>> x and 1 1 >>> y = 0 >>> >>> x = 5 >>> x and 1 1 >>> y = 0 >>> y and 1 0

>>> x = 5 >>> x and 6 6 >>> y = False >>> >>> x = 5 >>> x and 6 6 >>> y = False >>> y or 'hello'

 • Логический оператор в питоне может вернуть числовое значение? • Логический оператор в питоне может вернуть числовое значение?

Особенность питона • Логический оператор в питоне может вернуть любое значение >>> x = Особенность питона • Логический оператор в питоне может вернуть любое значение >>> x = 5 >>> x or 1 5 >>> y = 1 >>> y and 123 >>> 'Hello World!' or y 'Hello World!'

Общее правило для and • Логический оператор and: Если первый операнд равен истине (т. Общее правило для and • Логический оператор and: Если первый операнд равен истине (т. е. не равен нулю, False или пустому элементу) - возвращает второй операнд, иначе – первый операнд

>>> 12 and False >>> 0 and False 0 >>> 12 and False >>> 0 and False 0

Общее правило для or • Логический оператор or: Если первый операнд равен истине (т. Общее правило для or • Логический оператор or: Если первый операнд равен истине (т. е. не равен нулю, False или пустому элементу) - возвращает первый операнд, иначе – второй операнд

>>> 12 or 123 12 >>> 0 or 5 5 >>> 0 or False >>> 12 or 123 12 >>> 0 or 5 5 >>> 0 or False >>> False or 0 0

Поэтому • Сравнения с числовыми значениями лучше выполнять явно. • Присваивать результат сравнения в Поэтому • Сравнения с числовыми значениями лучше выполнять явно. • Присваивать результат сравнения в переменную с приведеннием к логическому типу >>> x = 15 >>> y = True >>> z = bool(x or y)

Условное выполнение • Позволяет проверить условие и изменить поведение программы в зависимости от результата Условное выполнение • Позволяет проверить условие и изменить поведение программы в зависимости от результата проверки

Условное выполнение • Условное выполнение позволяет организовать ветвление в программе • Выполнение частей кода Условное выполнение • Условное выполнение позволяет организовать ветвление в программе • Выполнение частей кода начинает зависеть от условий • Часть кода выполняется не во всех случаях, а в зависимости от состояния программы • Т. е. в зависимости от исходных данных

 • if – условный оператор • Синтаксис if УСЛОВИЕ: действие 1 Выполняются только • if – условный оператор • Синтаксис if УСЛОВИЕ: действие 1 Выполняются только если условие истинно … действие n

if x > 0: print if x > 0: print "x is positive"

Блочная структура программы HEADER: FIRST STATEMENT. . . LAST STATEMENT Блочная структура программы HEADER: FIRST STATEMENT. . . LAST STATEMENT

Блочная структура программы HEADER: FIRST STATEMENT. . . LAST STATEMENT заголовок Вложенный бок Блочная структура программы HEADER: FIRST STATEMENT. . . LAST STATEMENT заголовок Вложенный бок

Особенности Питона • Вложенность блока в Питоне определяется отступами Особенности Питона • Вложенность блока в Питоне определяется отступами

Отступ определяет блок if grade > 3: print ‘The grade is {0}’. format(grade) print Отступ определяет блок if grade > 3: print ‘The grade is {0}’. format(grade) print ‘Student passed the exam' if grade > 3 : print ‘The grade is {0}’. format(grade) print ‘Student passed the exam'

Альтернативы if x%2 == 0: print x, Альтернативы if x%2 == 0: print x, "is even" else: print x, "is odd" Первая ветвь условия Вторая ветвь условия

Множественные условия if x < y: print x, Множественные условия if x < y: print x, "is less than", y elif x > y: print x, "is greater than", y else: print x, "and", y, "are equal"

if choice == ’A’: function. A() elif choice == ’B’: function. B() elif choice if choice == ’A’: function. A() elif choice == ’B’: function. B() elif choice == ’C’: function. C() else: print "Invalid choice. "

 • Все условия проверяются по порядку до первого истинного • Даже если во • Все условия проверяются по порядку до первого истинного • Даже если во вложенных условиях есть другие истинные ветви – выполнится только первая ветвь выполнения с истинным условием

x=1 y=2 z=3 if x < y: print ‘x!’ elif y < z: print x=1 y=2 z=3 if x < y: print ‘x!’ elif y < z: print ‘y!’ else: print ‘z!’

x=1 y=2 z=3 if x < y: print ‘x!’ elif y < z: print x=1 y=2 z=3 if x < y: print ‘x!’ elif y < z: print ‘y!’ else: print ‘z!’ True

x=1 y=2 z=3 if x < y: print ‘x!’ elif y < z: print x=1 y=2 z=3 if x < y: print ‘x!’ elif y < z: print ‘y!’ else: print ‘z!’ Output: x!

Вложенные условия • Одни проверки могут быть вложены в другие Вложенные условия • Одни проверки могут быть вложены в другие

if x == y: print x, if x == y: print x, "and", y, "are equal" else: if x < y: print x, "is less than", y else: print x, "is greater than", y

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

Объединение условий if 0 < x: if x < 10: print Объединение условий if 0 < x: if x < 10: print "x is a positive single digit. " if 0 < x and x < 10: print "x is a positive single digit. " if 0 < x < 10: print "x is a positive single digit. "

Такая запись требует внимания x=1 if 0 > x > 10: print 'X is Такая запись требует внимания x=1 if 0 > x > 10: print 'X is positive and less then 10!'

Условия • С помощью проверки условий организуется ветвление в программе, что позволяет сделать ее Условия • С помощью проверки условий организуется ветвление в программе, что позволяет сделать ее гибкой к входным данным

Итерация • При необходимости повторить действия несколько раз используются циклы • Циклическое выполнение = Итерация • При необходимости повторить действия несколько раз используются циклы • Циклическое выполнение = итеративное выполнение. • Итерация – один шаг цикла

Циклы • С условием выхода из цикла – С предусловием – С постусловием • Циклы • С условием выхода из цикла – С предусловием – С постусловием • Со счетчиком

While • Цикл с условием типа «пока» • «пока выполняется условие повторять указанные действия» While • Цикл с условием типа «пока» • «пока выполняется условие повторять указанные действия»

Синтаксис while условие: действие 1 … действие n Синтаксис while условие: действие 1 … действие n

Например n=7 while n > 0: print n n = n-1 Output 7 6 Например n=7 while n > 0: print n n = n-1 Output 7 6 5 4 3 2 1

Порядок выполнения • • • Проверка условия Если условие истинно, Выполнить действия в блоке Порядок выполнения • • • Проверка условия Если условие истинно, Выполнить действия в блоке Вернуться к проверке условия Если условие ложно, перейти к операторам после цикла

n=1 while n > 0: print n n = n-1 print 'done' n=1 while n > 0: print n n = n-1 print 'done'

Условие выхода • Так или иначе действия внутри цикла должны привести к изменению условия Условие выхода • Так или иначе действия внутри цикла должны привести к изменению условия выполнения цикла, • Иначе формируется бесконечный цикл

Например n=7 while n > 0: print n n = n-1 Output 7 7 Например n=7 while n > 0: print n n = n-1 Output 7 7 7 7 7

Неисполнение тела цикла • В случае, если условие входа в цикл не выполняется, действия Неисполнение тела цикла • В случае, если условие входа в цикл не выполняется, действия могут не выполниться ни одного раза

While-else while условие: действие 1 … действие n else: действия Действия в данном блоке While-else while условие: действие 1 … действие n else: действия Действия в данном блоке выполнятся, когда условие станет ложно

Например n = -1 while n > 0: print n n = n-1 else: Например n = -1 while n > 0: print n n = n-1 else: print '<= 0' Output: <= 0

Например n=7 while n > 0: print n n = n-1 else: print '<= Например n=7 while n > 0: print n n = n-1 else: print '<= 0' Output:

Например n=7 while n > 0: print n n = n-1 else: print '<= Например n=7 while n > 0: print n n = n-1 else: print '<= 0' Output: 7 6 5 4 3 2 1 <= 0

Управление выполнением цикла Управление выполнением цикла

Прекращение выполнения цикла • Для экстренного прекращения выполнения цикла можно – Делать ложным условие Прекращение выполнения цикла • Для экстренного прекращения выполнения цикла можно – Делать ложным условие выполнения • Использовать оператор break

Например n=7 while n > 0: print n n = n-1 if n == Например n=7 while n > 0: print n n = n-1 if n == 3: n=0 print 'После цикла n=', n Output: 7 6 5 4 После цикла n=0

Например n=7 while n > 0: print n if n == 3: n=0 n Например n=7 while n > 0: print n if n == 3: n=0 n = n-1 print 'После цикла n=', n Output: 7 6 5 4 3 После цикла n=0

Например n=7 while n > 0: print n if n == 3: break n Например n=7 while n > 0: print n if n == 3: break n = n-1 print 'После цикла n=', n Output: 7 6 5 4 3 После цикла n=3

 • Оператор break прекращает выполнение цикла без запуска блока действий в разделе else • Оператор break прекращает выполнение цикла без запуска блока действий в разделе else

n=7 while n > 0: print n n = n-1 if n == 3: n=7 while n > 0: print n n = n-1 if n == 3: break else: print '<= 0' Output: 7 6 5 4 3

 • Переход к следующей итерации continue • Переход к следующей итерации continue

n=7 while n > 0: n = n-1 if n == 3: continue else: n=7 while n > 0: n = n-1 if n == 3: continue else: print n else: print '<= 0' Output:

n=7 while n > 0: n = n-1 if n == 3: continue else: n=7 while n > 0: n = n-1 if n == 3: continue else: print n else: print '<= 0' Output: 6 5 4 2 1 <=0

n=7 while n > 0: if n == 3: continue else: print n n=n-1 n=7 while n > 0: if n == 3: continue else: print n n=n-1 else: print '<= 0' Output:

n=7 while n > 0: if n == 3: continue else: print n n=n-1 n=7 while n > 0: if n == 3: continue else: print n n=n-1 else: print '<= 0' Output: 7 6 5 4 3 3

Цикл со счетчиком • Позволяет указать количество итераций явно • Позволяет знать и использовать Цикл со счетчиком • Позволяет указать количество итераций явно • Позволяет знать и использовать номер итерации

for счетчик in значения: операторы цикла for счетчик in значения: операторы цикла

for x in (1, 3, 5, 7, 11, 13, 17, 19): print x Output for x in (1, 3, 5, 7, 11, 13, 17, 19): print x Output 1 3 5 7 11 13 17 19

Диапазоны • Оператор range позволяет задать последовательность значений range(n) от 0 до n range(f, Диапазоны • Оператор range позволяет задать последовательность значений range(n) от 0 до n range(f, t) от f до t range(f, t, s) от f до t с шагом s, то есть f, f+s, f+2 s. . пока f+n*s < t (t не входит в диапазон, неравенство не строгое)

>>> x=range(10) >>> x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> x=range(10) >>> x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> x=range(3, 7) >>> x [3, 4, 5, 6] >>> x=range(1, 11, 2) >>> x [1, 3, 5, 7, 9]

for x in range(5): print x Output 0 1 2 3 4 for x in range(5): print x Output 0 1 2 3 4

Переменная цикла • Менять переменную цикла в ходе выполнения бесполезно (она на каждом шаге Переменная цикла • Менять переменную цикла в ходе выполнения бесполезно (она на каждом шаге инициализируется) for x in range(5): x += 1 Output 1 print x 2 3 4 5

Вопросы? Вопросы?