|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[8] if (A): print "!"if (A or B): elif (B): => print " ! " print " ! "else: elseprint "?" print "?" Совет, данный нами при описании приоритетов различных операций, остается в силе и здесь: не жалейте скобок для того, чтобы сделать выражение более удобным и читабельным для вас - питон всё поймет и всё простит, но простите ли вы себя сами через месяц, пытаясь разобраться в мудреных условиях? 3.11 Комментарии Комментариями называют части программы, не интересующие интерпретатор. В питоне есть два варианта комментариев: однострочные естественные и многострочные синтаксические. Комментарии первого типа начинаются символом ф и завершаются переходом на новую строку, i = 1 #этого питон уже не видит Комментарии второго типа представляют собой строку, записанную без всякого присваивания. В случае прямой работы с интерпретатором в диалоговом режиме эта строка будет выдана на экран, но при выполнении программы из файла она не попадет никуда: j = 1+i м и и Комментарий, поясняющий, что в этом месте программы переменная j получила инкрементированное значение переменной i и и и В новых версиях питона этот возникший чисто синтаксический механизм обмана интерпретатора получил более оправданное применение. Например, при определении функции комментарий записывается в специальную связанную с ней переменную func doc. 4 Циклы и функции 4.1 Оператор перебора и оператор с предусловием Оператор перебора позволяет применять одну и ту же последовательность операторов ко всем значениям последовательности. Записывается он так: for х in (1,3,5,7,11,13,17,19): и<операторы> при выполнении этого кода операторы будут выполнены столько раз, какова длина последовательности (в нашем случае это 8) и каждый раз х будет иметь значение очередного элемента последовательности: 1 на первом витке, 3 - на втором, 5 - на третьем, и т.д. Питон позволяет выполнять оператор перебора относительно нескольких переменных: for х,у in ((1,2),(3,4),(5,6)): и<операторы> При этом на каждом проходе пара х и у (точнее, кортеж, состоящий из этой пары) будет принимать значение соответствующей пары последовательности. Если структура последовательности не подходит, интерпретатор питона выдаст ошибку: Распаковка не-последовательности (unpack поп-sequence). Конечно, каждый раз указывать все значения - дело достаточно утомительное, поэтому в питоне есть встроеная функция range (), генерирующая список последовательных целых чисел в нужном интервале. С этой функцией мы мельком познакомились еще в прошлой лекции. Эту чрезвычайно полезную функцию можно использовать тремя способами: range(п) создаст список целых чисел от 0 включительно до п невключительно, range(f,t) создаст список целых чисел от f включительно до t невключительно, range(f,t,s) создаст список чисел из интервала [f ,t) вида /, f+s, f+2*s, ... - может быть полезно при использовании вещественных чисел. При использовании чрезвычайно больших списков ради экономии памяти можно воспользоваться функцией xrangeO, которая, работая абсолютно аналогичным образом, не вычисляет сразу значение каждого элемента итоговой последовательности, а создает определенный объект, элементы которого вычисляются только при непосредственном обращении к ним. Математик сказал бы, что range О реализует абстракцию актуальной бесконечности, тогда как xrangeO - абстракцию потенциальной достижимости. Если ваш список содержит несколько миллионов элементов, а одновременно нужны из них бывают только два или три, вы сможете заметить разницу в скорости выполнения программы при переходе с range О на xrange () невооруженным взглядом. Например, программа from whrandom import choice from time import clock beg=clock() A=range(30000000) b=choice(A) print clock()-beg выполняется на компьютере AMD Duron 750MHz с 256Mb оперативной памяти и операционной системой Windows за 65-75 секунд, не считая пяти, а то и десяти минут выгрузки интерпретатора операционной системой, тогда как версия с xrange () выполняется за немногим более одной десятитысячной доли секунды. Упражнение. Придумайте пример, когда время работы программы не может существенно измениться при переходе с range О на xrange (). Но вернемся к операторам циклов. Более высокоуровневую абстракцию повторяющихся операторов представляет собой цикл while - цикл с предусловием. При его использовании вместо прямого перечисления всех пробегаемых значений переменной цикла программист формулирует условие, которое остается истинным, если нужно выполнять итерацию и становится ложным в противном случае. Существуют языки программирования, специально ориентированные на такие условия (там они называются инвариантами) . Все алгоритмы для программирования на подобных языках должны быть переформулированы с определение инварианта для каждой не единожды выполняемой строчки. Так далеко решаются заходить немногие, но циклы с условиями уже успели стать неотъемлимой частью всех алгоритмических языков. Записывается цикл с предусловием так: while <условие> и<операторы> И, пока (а именно так, как вы знаете, переводится слово while) условие будет истинно, операторы будут выполняться еще и еще. Интерпретатор действует следующим образом: сначала проверяется условие и, если оно ложно, управление передается оператору, следующему за циклом while (говорят: происходит выход из цикла). Если же условие истинно, выплдняются все операторы цикла (которые, как известно, находятся в отступе относительно самого оператора), после чего опять проверяется условие и в случае его истинности все повторяется с начала, а в случае ложности происходит выход из цикла. Очевидно, что цикл while (1): ... будет вечным (из него никогда не будет выхода), а цикл while (0): ... не будет выполнен ни разу. Цикл не может быть пустым, в случае необходимости используют ничего не делающий оператор pass: while (1): pass # вечное бездействие Для экстренного выхода из цикла также существуют особые методы. Для безусловного выхода используется всевдооператор break: while (1): ui/=10 uifuOi) :ubreak Теперь становится обоснованным применение вечных циклов, не так ли? Для условного выхода (еще называемого продолжением вычислений) используют continue. Встретив этот псевдооператор, интерпретатор передает управление в точку, где происходит проверка условия цикла. Таким образом, при ложном условии continue вызывает выход из цикла, а при истинном - очередной виток вычислений. Ясно, что средства break и continue применимы и к циклу перебора: первый прерывает цикл, а второй вызывает новый виток вычислений, если текущее значение переменной цикла не последнее, иначе также завершает перебор. |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||