Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[7]

в данном словаре. Кроме получения списка ключей (keysО) и списка значений (valuesО) весьма полезно представление словаря как списка кортежей функцией items О. Понятно, что здесь философия соблюдена - легко что-то добавить в полученный псевдокортеж или отсортировать его, а каждой паре это ни к чему - всё, что нам нужно знать, это где ключ и где значение, ему соответствующее. Это с лихвой обеспечивается кортежем.

Прочие возможности и приёмы работы со словарём можно узнать у функции dir({}).

Ясно, что уже данное нами определение типа при нынешнем уровне знаний не выдерживает никакой критики, и нужно давать его заново и по-другому:

Определение. Тип есть совокупность множества значений и методов для работы с ними.

Упражнение. Множество допустимых значений типа - это список или кортеж? А сам тип?

Существует большое разнообразие типов, необходимых в самых разных областях применения программирования. Среди наиболее интересных можно вспомнить множества - когда важно присутствие элемента, но не важен его порядок, и один элемент может присутствовать только в единственном экземпляре. Для графов существует много разных машинных представлений: матрицы инцидентности и смежности, объединение множества дуг и множества вершин и т.п. Деками называют массивы, в которых доступ может производиться только к крайним элементам, по одному с каждой стороны (такая же, но одностороняя структура называется стеком). В некоторых задачах удобно пользоваться кольцами - замкнутыми массивами, в которых доступ осуществляется только к одному элементу кольца и для перехода к другому кольцо нужно прокрутить. Всё это - сильно специализированные вещи, не входящие в стандартную поставку питона, но их можно реализовать с помощью объектной модели, о чем мы и узнаем через несколько лекций.

Лекция шестая

Несмотря на то, что питон - язык нетипизированный, мы и в этой лекции рассмотрим еще один тип данных и операторы, им порожденные.

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


3.10 Логический тип

Логический тип, как можно догадаться, состоит всего из двух возможных значений: истины и лжи (англоязычные источники пользуются терминами true и false соответственно). В питоне нет самостоятельного булева типа даже на том уровне, где можно признать существование целого и вещественного типов данных (ведь, вообще говоря, нет никаких типов, так, теория одна). В качестве булева типа возможно использование любого другого по следующим правилам:

•Операции отношения, такие, как >,== или !=, возвращают 1 (значение целого типа), если отношение выполняется и 0 в противном случае.

•При использовании значения какого-либо типа в качестве булева только всевозможные нули и пустые списки (то есть 0, 0.0, 0L, 0j , О , " , , >>>>>>, ............, [] , {}, а также особый пустой объект None, с которым мы ознакомимся позже) считаются ложью, все прочие - истиной.

•Выражение A or В (А или В) возвращает В, если А ложно и А в противном случае.

•Выражение A and В (А и В) возвращает В, если А истинно и А в противном случае.

•Выражение not А (не А) возвращает 1, если А ложно и 0 в противном случае.

Изменить это (если кому вдруг захочется) нельзя, а создать новый тип с похожими свойствами можно только пользуясь объектно-ориентированным подходом, о чем мы расскажем позже.

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

В языке питон существует три вида таких операторов: ветвление, повтор и перебор. Оператор ветвления записывается так: if <условие>: <оператор> или так: if <условие>: и<оператор>

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


После двоеточия указывается оператор, который будет выполнен в случае истинности условия. Если в случае истинности нужно выполнить не одну, а несколько строк кода, используется так называемый составной оператор, обозначаемый отступом:

ifu(A):

UB=input()

uprintuA+B

Отступом может служить как пробел, так и символ табуляции. Составной оператор (а с ним и оператор ветвления) кончается перед следующей строкой без отступа.

Для сравнения величин многих типов (чисел, строк, ...) используются привычные математические символы: < для меньше, > для больше, >= для больше или равно, <= для меньше или равно, == для равно, <> или != для не равно. Их можно группировать по всем правилам арифметики:

if 0<х<10 and -10<=у<=100: print у/,х

Есть еще две инфиксных (то есть записывающихся между операндами) операции сравнения: is и in. Первая используется в основном для сравнения объектов на эквивалентность, для более простых же типов данных она аналогична ==. Вторая проверяет элемент на принадлежность последовательности (кортежу, списку или строке). Есть краткая запись для not (е in L):

е not in L

Оператор ветвления можно продлить, добавив секцию, срабатывающую при ложном условии. Повторно указывать условие не нужно: if (<условие>): и<операторы> else:

и<операторы>

Развивая заложенную в этом маленьком усовершенствовании большую идею, можно придти к так называемому множественному ветвлению, когда в случае неудачи одного условия проверяется другое, при его неудаче - третье, четвертое, и так далее. В питоне это записывается следующим образом:

if (<условие>):

и<операторы>

elif (<условие>):

и<операторы>

elif (<условие>):

и<операторы>

и<операторы>

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



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13]