Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 4656 / 500 | Длительность: 21:48:00
Авторские права: Creative Commons Attribution 3.0
Самостоятельная работа 5:

Итерации

< Самостоятельная работа 1 || Самостоятельная работа 5: 123

Смотреть лекцию на: ИНТУИТ | youtube.com

Если проблемы с видео, нажмите выше ссылку youtube

Get Adobe Flash Player

По ссылке youtube выложено видео с русскими титрами.

10.1. Обновление переменной

Общим шаблоном в инструкциях присваивания является инструкция присваивания, которая обновляет переменную, где новое значение переменной зависит от старого:

x = x+1

Это означает "получить текущее значение x, прибавить к нему 1 и затем обновить x, присвоив ему новое значение".

Если вы попытаетесь обновить переменную, которая не существует, то получите ошибку, т.к. Python вычисляет правую сторону раньше ее присваивания переменной x:

>>> x = x+1

NameError: name 'x' is not defined

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

>>> x = 0

>>> x = x+1

Обновление переменной, путем прибавления к ней 1, называется инкрементом (increment), вычитание 1, называется декрементом (decrement).

10.2. Инструкция while

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

Одной из форм итераций в Python является инструкция while. Далее представлена простая программа, которая производит обратный отсчет от 5 и затем говорит "Blastoff!".

n = 5
while n > 0:
         print n
         n = n-1
print 'Blastoff!'

Вы также можете читать инструкцию while, как если бы это был английский язык. Это означает, "до тех пор, пока n больше 0, выводить на экран значение n и уменьшать n на 1. Когда достигнем 0, покинуть инструкцию while и вывести на экран слово Blastoff!"

Более формально, поток выполнения для инструкции while имеет следующий вид:

  1. Вычисление условия, получаем True или False.

  2. Если условие ложно, то выходим из инструкции while и продолжаем выполнение со следующей инструкции.

  3. Если условие истинно, то выполняем тело и затем возвращаемся на шаг 1.

Этот тип потока называется циклом (loop), т.к. третий шаг цикла возвращается на начало. Выполнение тела цикла называется итерацией (iteration). Для приведенного выше цикла, мы бы сказали, что "прошло 5 итераций", т.е. тело цикла было выполнено 5 раз.

Тело цикла должно изменять одну или более переменных, что в конечном итоге приведет к ложности условия и завершению цикла. Переменные, которые изменяются каждый раз при выполнении цикла и контролируют завершение цикла, называются итерационными переменными (iteration variable). Если итерационная переменная в цикле отсутствует, то такой цикл будет бесконечным (infinite loop).

10.3. Бесконечные циклы

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

В случае с обратным отсчетом, мы можем удостовериться, что цикл завершится, т.к. мы знаем, что значение n конечно, мы можем увидеть, что значение n каждый раз уменьшается и в конечном итоге станет равным нулю.

10.4. "Бесконечные циклы" и break

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

Это явно бесконечный цикл, т.к. логическое выражение в инструкции while содержит True:

n = 10
while True:
         print n,
          n = n - 1
print 'Done!'

Если вы совершите ошибку и запустите этот код, то быстро научитесь, как останавливать процесс Python в вашей системе или найдете кнопку выключения питания на вашем компьютере (что делать не желательно). Эта программа работает постоянно или пока не разрядится батарея, т.к. логическое выражение всегда будет истинным.

Мы можем добавить в тело цикла код с break, который позволит выйти из цикла при наступлении заданного условия.

Например, предположим, что мы принимаем входные значения с клавиатуры, пока пользователь не наберет "done". Можем записать это следующим образом:

while True:
       line = raw_input('> ')
       if line == 'done':
            break
       print line
print 'Done!'

Условие цикла является True, т.е. всегда истинным. Оно будет выполняться, пока на достигнет инструкции прерывания.

< Самостоятельная работа 1 || Самостоятельная работа 5: 123
Ксения Шошина
Ксения Шошина

курс Программирование на Python

Илья Кизилов
Илья Кизилов

В лекции приводится программа для сортировки слов по их длинне. В коде ошибка. Я исправил так:

def sort_by_length(words):

words = words.split()

t = []

for word in words:

t.append((len(word), word))

t.sort(reverse=True)

res = []

for length, word in t:

res.append(word)

return res

print(sort_by_length(words))

 

Кто ещё как сделал?

 

Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша
Андрей Микульский
Андрей Микульский
Молдова, Республика, Комрат, Комратский Государственный Университет