Технологии и методы программирования. Учебное пособие
.pdfПомимо использования range в цикле for возможен перебор строк. Пример:
message = "Hello" for c in message: print(c)
Данный цикл выводит побуквенно переменную «message».
Цикл while проверяет истинность некоторого условия. Если условие истинно, то выполняются инструкции цикла. После ключевого слова while указывается условное выражение, и пока это выражение возвращает значение True, будет выполняться блок инструкций, который идет далее.
Все инструкции, которые относятся к циклу while, располагаются на последующих строках и должны иметь отступ от начала ключевого слова while. Пример:
i = 5
while i <= 15: print(i)
i+=2
Данный цикл выводит числа 5, 7, 9, 11, 13, 15.
Если условие, заданное в цикле while, никогда не станет ложным, то цикл while никогда не завершится – и он превратится в бесконечный цикл while.
Любое ненулевое значение в цикле while указывает на всегда истинное состояние, в то время как ноль указывает на всегда ложное состояние. Такой подход полезен, если мы хотим, чтобы наша программа непрерывно выполнялась в цикле без каких-либо помех. Пример:
isTrue = True while isTrue:
if input("Введите слово: ") == "Stop": isTrue = False
Этот цикл останавливает свою работу при вводе пользователем слова Stop.
11
Помимо рассмотренных выше существуют также операторы циклов break и continue. Break – это ключевое слово в Python, которое используется для вывода управления программой из цикла. Оператор break разрывает циклы по одному, т. е. в случае вложенных циклов он сначала разрывает внутренний цикл, а затем переходит к внешним циклам. Можно сказать, что операторbreak используется для прерывания текущего выполнения программы, и управление переходит на следующую строку после цикла [1].
Прерывание обычно используется в тех случаях, когда нам нужно прервать цикл при заданном условии. Пример:
str = "python" for i in str: if i == 'o': break
print(i)
Данный цикл выводит все буквы до «o» и заканчивается.
Оператор continue в Python используется для возврата управления программой в начало цикла. Оператор continue пропускает
оставшиесястрокикодавнутрициклаиначинаетследующуюитерацию. В основном он используется для определенного условия внутри цикла, чтобы мы могли пропустить определенный код для конкретного условия. Пример:
i = 0
while(i < 10): i = i+1
if(i == 5): continue print(i)
Данный цикл выводит числа от 1 до 10, пропуская число 5.
12
Структуры данных: списки (list), кортежи (tuple),
словари (dict), множества (set, frozenset)
Список представляет собой изменяемую последовательность объектов. Из нее можно удалять элементы, добавлять новые, изменять элементы по индексу.
Создать список можно следующим образом:
data = []
Так создается пустой список. Изначально можно добавить в список элементы разного типа. Пример:
data = [1, 2, 5, False, "hello", 8.8]
Синтаксис для доступа к элементам списка – операторы квадратных скобок, выражениевнутрискобокопределяетиндекс. Индексацияначинается с нуля. Любое целочисленное выражение можно использовать в качестве индекса. Если вернуться к примеру выше, то print (data[0]) выведет значение 1, а print (data[4]) – hello.
Список внутри другого списка является вложенным. Пример:
data = [1, 2, 5, False, "hello", 8.8, [3, 4]]
При print (data[6]) будет выведен вложенный список [3, 4]. Для доступа к конкретному элементу вложенного списка используется конструкциятипаdata[6][0] (извлекается3) или data[6][1] (извлекается 4). Если индекс имеет отрицательное значение, то отсчет элементов ведется в обратном направлении от конца списка. В данном случае print (data[-1]) выводит вложенный список.
Для списков существуют методы, представленные в табл. 7 (list – имя списка).
Помимо последнего метода также используется функция len(), возвращающая количество элементов списка.
Кортеж – это неизменяемая последовательность объектов. Отличие от списка заключается в том, что кортеж не допускает присваивания по индексу, добавления, вставкииудаленияэлементов, атакжесортировку и обращение порядка.
13
|
|
Таблица 7 |
|
Методы списков |
|
|
|
|
Метод |
|
Описание |
|
|
|
list.append(x) |
|
Добавляет элемент в конец списка |
list.insert(i, x) |
|
Вставляет на i-й элемент значение x |
list.extend(L) |
|
Расширяет список list, добавляя |
|
в конец все элементы списка L |
|
|
|
|
list.reverse() |
|
Разворачивает список |
list.sort([key=функция]) |
Сортирует список на основе функции |
|
list.pop([i]) |
|
Удаляет i-й элемент и возвращает |
|
его. Если индекс не указан, то удаляется |
|
|
|
последний элемент |
|
|
|
list.remove(x) |
|
Удаляет первый элемент в списке, |
|
имеющий значение x. ValueError, |
|
|
|
если такого элемента не существует |
list.clear() |
|
Очищает список |
list.count(x) |
|
Возвращает количество элементов со |
|
значением x |
|
|
|
|
Создать кортеж можно следующим образом:
data = ()
Так создается пустой кортеж. Изначально можно добавить в кортеж элементы разного типа. Пример:
data = (1, 2, 5, False, "hello", 8.8)
Синтаксис для доступа к элементам кортежа аналогичен спискам – операторы квадратных скобок. Инструкция print (data[1]) выве-
дет значение 2, а print (data[3]) – False.
Для кортежей не допускаются те методы, используемые в списках, которые изменяют структуру данных. Возможно использование, напри-
мер, функции count() и len().
14
Кортеж создается при указании элементов через запятую, потому скобки можно опустить. Кортеж из одного элемента создается следующим образом:
one_item_data = 1,
Можнопреобразоватьсписоквкортежприпомощифункцииtuple. Пример:
data = [1, 2, 5, False, "hello", 8.8] new_data = tuple(data)
Словарь отражает связь «ключ – значение». Словари в Python реализованы как hash-таблица (ассоциативный массив пар).
Создать словарь можно следующим образом:
data = {}
Так создается пустой словарь. Изначально можно добавить в словарь элементы разного типа. Пример:
data = {'code': 'RU', 'name': 'Россия',
'population': 144}
Синтаксис для доступа к элементам словаря – операторы квадратных скобок. Функция print (data['name']) выведет «Россия».
Возможно создание словаря альтернативным способом с использованием функции dict(). Пример:
data = dict(code='RU', name='Россия',
population=144)
Для словарей существуют методы, представленные в табл. 8 (dict – имя словаря).
В случае словарей может также использоваться любая вложенность. Множества (set) являются набором некоторых элементов, в котором порядок не важен. Все элементы должны быть хешируемы, как и в словарях. Для множества есть его неизменяемый аналог –
frozenset.
15
|
|
Таблица 8 |
|
Методы словарей |
|
|
|
|
Метод |
|
Описание |
|
|
|
dict.get(key[, |
|
Возвращает значение ключа, но если его нет, |
default]) |
|
то не бросает исключение, а возвращает |
|
|
default (по умолчанию None) |
dict.clear() |
|
Очищает словарь |
dict.pop(key[, |
|
Удаляет ключ и возвращает значение. Если |
default]) |
|
ключа нет, то возвращает default (по умол- |
|
|
чанию бросает исключение) |
dict.popitem() |
|
Удаляетивозвращаетпоследнююпару(ключ, |
|
|
значение). Если словарь пуст, то бросает ис- |
|
|
ключение KeyError. Помните, что словари |
|
|
не упорядочены |
dict.keys() |
|
Возвращает ключи в словаре |
dict.values() |
|
Возвращает значения в словаре |
dict.items() |
|
Возвращает пары (ключ, значение) |
dict.update([other]) |
|
Обновляетсловарь, добавляяпары(ключ, зна- |
|
|
чение) из other (other – либо другой объ- |
|
|
ектсловаря, либоитерируемаяпоследователь- |
|
|
ность пар ключ/значение в виде кортежей или |
|
|
других итераций вида (key, value)). Су- |
|
|
ществующие ключи перезаписываются. Воз- |
|
|
вращает None (не новый словарь) |
Создать множество можно следующим образом: data = set('hello')
При этом вторая буква l будет удалена из множества, а элементы расположены в случайном порядке.
Возможно создание альтернативным способом: data = {1, 2, 5, 7, 2}
16
Повторяющаяся цифра 2 также будет исключена из данного множества при создании.
Для множеств существуют методы, представленные в табл. 9 (set – имя множества).
|
Таблица 9 |
Методы множеств |
|
|
|
Метод |
Описание |
|
|
set.add(elem) |
Добавляет элемент в множество |
set.update(other, ...) |
Объединение множеств |
set.remove(elem) |
Удаляет элемент из множества. KeyError, |
если такого элемента не существует |
|
set.pop() |
Удаляет первый элемент из множества. |
Так как множества не упорядочены, нельзя |
|
|
точно сказать, какой элемент будет первым |
set.clear() |
Очистка множества |
Списки можно преобразовывать в множества при помощи функции set(). При этом повторяющие элементы будут удалены. Для создания неизменяемогомножестваиспользуетсяфункцияfrozenset(). Неизменяемое множество не может работать с методами добавления или удаления, как и кортеж.
Варианты практического задания № 1
Составить программу согласно полученному варианту задания (табл. 10). Ввод данных сопровождать соответствующими запросами, а вывод – наименованиями выводимых переменных.
Таблица 10
Варианты для выполнения практического задания № 1
Вариант |
Задание |
1Для списка А, состоящего из 20 элементов, вычислить количество отрицательных элементов списка
17
|
Продолжение табл. 10 |
|
|
Вариант |
Задание |
|
|
2 |
Для списка В, состоящего из 20 элементов, вычислить сумму |
|
положительных элементов списка |
|
|
3 |
Для неизменяемой последовательности, состоящей из 16 элемен- |
|
тов, создать список из значений под четными номерами этой по- |
|
следовательности |
|
|
4 |
Для списка Х, состоящего из 15 элементов, найти наибольший |
|
элемент списка и его порядковый номер |
|
|
5 |
Для списка Y, состоящего из 15 элементов, найти наименьший |
|
элемент списка и его порядковый номер |
|
|
6 |
Для списка Z, состоящего из 20 элементов, найти наименьший |
|
из положительных элементов |
|
|
7 |
Для списка Х, состоящего из 14 элементов, вывести на печать но- |
|
мера элементов, удовлетворяющих условию 0 < X(i) < 1 |
|
|
8 |
Информация о температуре воздуха за март задана в виде списка. |
|
Определить, сколько раз температура поднималась выше 0° С |
|
|
9 |
Дана последовательность целых чисел а1, а2, …, а18. Создать спи- |
|
сок из нечетных чисел этой последовательности. Если таких чисел |
|
нет, то вывести сообщение об этом факте |
|
|
10 |
При поступлении в вуз абитуриенты, получившие двойку на пер- |
|
вом экзамене, ко второму не допускаются. В списке А записаны |
|
оценки 25 экзаменующихся, полученные на первом экзамене. |
|
Подсчитать, сколько человек не допущено ко второму экзамену |
|
|
11 |
В списке из 20 целых чисел найти наибольший элемент и поме- |
|
нять его местами с первым элементом |
|
|
12 |
В списке из 10 целых чисел найти наименьший элемент и поме- |
|
нять его местами с последним элементом |
|
|
13 |
В списке из 15 вещественных чисел найти наибольший элемент |
|
и поменять его местами с последним элементом |
|
|
18
|
Окончание табл. 10 |
|
|
Вариант |
Задание |
|
|
14 |
В списке из 12 вещественных чисел найти наименьший элемент |
|
и поменять его местами с первым элементом |
|
|
15 |
Упорядочить по убыванию список, содержащий 10 вещественных |
|
чисел |
16 |
Упорядочить по возрастанию список, содержащий 15 целых чисел |
|
|
17 |
Дан список целых чисел, содержащий 10 элементов. Записать |
|
в этот же список сначала все положительные числа, а затем |
|
все отрицательные, сохраняя порядок их следования |
18 |
Дан список вещественных чисел, содержащий 12 элементов. Запи- |
|
сать в этот же массив сначала все отрицательные числа, а затем |
|
все положительные, сохраняя порядок их следования |
|
|
19 |
Дан список целых чисел, содержащий 14 элементов. Переставить |
|
его элементы в обратном порядке |
|
|
20 |
Последовательность a1, a2, …, a12 состоит из нулей и единиц. |
|
Поставить в начало этой последовательности нули, а затем еди- |
|
ницы |
|
|
Контрольные вопросы
1.Расскажите, для чего предназначены функции print и input.
2.Перечислите дополнительные параметры инструкции print.
3.Перечислите встроенные математические функции языка Python.
4.Перечислите базовые типы данных Python.
5.Приведите примеры функций преобразования из одного типа
вдругой.
6.Перечислите операторы присваивания Python.
7.Перечислите операторы сравнения Python.
8.Условный оператор. Опишите, как реализуется вариант с двумя ветвями выполнения.
9.Условный оператор. Опишите, как реализуется вариант с более чем двумя ветвями выполнения.
19
10.Перечислите логические операторы Python.
11.Перечислите типы циклов Python и их различия.
12.Расскажите про особенности цикла for.
13.Расскажите про особенности цикла while.
14.Перечислите операторы циклов Python.
15.Расскажите про особенности списков Python.
16.Перечислите методы, существующие для списков.
17.Расскажите про особенности кортежей Python.
18.Перечислите методы, существующие для кортежей.
19.Как можно преобразовать список в кортеж?
20.Расскажите про особенности словарей Python.
21.Перечислите методы, существующие для словарей.
22.Расскажите про особенности множеств Python.
23.Перечислите методы, существующие для множеств.
24.Назовите различия множеств и неизменяемых множеств.
25.Как можно преобразовать список в множество?
20
