- •§0.1. Базовые знания
- •§0.2. Где достать интерпретатор языка Питон?
- •§0.3. Установка интерпретатора языка Питон в unix
- •§0.3.1. Установка/обновление Питона из грт-пакета
- •§0.3.2. Установка Питона из исходного кода
- •§0.4. Установка Питона в ос Windows
- •§0.5. Запуск программ, написанных на Питоне
- •§0.6. Среда разработки
- •§1.1. Алгоритмы и программы
- •§1.2. Языки программирования и уровни абстракции
- •Глава 1. Базовые понятия
- •§1.3. Формальные и естественные языки
- •§1.4. Интерпретаторы и компиляторы
- •§1.5. Первая программа
- •§1.6. Что такое отладка?
- •§1.6.1. Синтаксические ошибки (syntax errors)
- •§1.6.2. Ошибки выполнения (runtime errors)
- •§1.6.3. Семантические ошибки (semantic errors)
- •§1.6.4. Процесс отладки
- •Глава 2. Переменные, операции и выражения
- •§2.1. Значения и типы
- •§2.2. Преобразование типов
- •§2.3. Переменные
- •§2.4. Имена переменных и ключевые слова
- •§2.5. Выражения
- •§2.6. Выполнение выражений
- •§2.7. Операторы и операнды
- •§2.8. Порядок операций
- •§2.9. Простейшие операции над строками
- •§2.10. Композиция
- •Глава 3. Функции §3.1. Подпрограммы
- •§3.2. Вызовы функций
- •§3.3. Справочная система
- •§3.4. Импорт модулей и математические функции
- •§3.5. Композиция
- •§3.6. Создание функций
- •§3.7. Параметры и аргументы
- •§3.8. Локальные переменные
- •§3.9. Поток выполнения
- •§3.10. Стековые диаграммы
- •§3.11. Функции, возвращающие результат
- •Глава 4. Компьютерная графика
- •Глава 5. Логические выражения, условия и рекурсия §5.1. Комментарии в программах
- •§5.2. Простые логические выражения и логический тип данных
- •§5.3. Логические операторы
- •§5.4. Выполнение по условию и «пустота»
- •§5.5. Ввод данных с клавиатуры
- •§5.6. Альтернативные ветки программы (Chained conditionals)
- •§5.7. Пустые блоки
- •§5.8. Вложенные условные операторы (Nested conditionals)
- •§5.9. Рекурсия
- •§5.10. Стековые диаграммы рекурсивных вызовов
- •§5.11. Максимальная глубина рекурсии
- •§5.12. Числа Фибоначчи
- •Глава 6. Циклы
- •§6.1. Оператор цикла while
- •§6.2. Счетчики
- •§6.3. Бесконечные циклы
- •§6.4. Альтернативная ветка цикла while
- •§6.5. Табулирование функций
- •§6.6. Специальные и экранируемые символы
- •§6.7. Числа Фибоначчи и оператор цикла while
- •§6.8. Вложенные операторы цикла и двумерные таблицы
- •§6.9. Классификация операторов цикла
- •§6.10. Управляющие структуры
- •Глава 7. Строки
- •§7.1. Оператор индексирования
- •§7.2. Длина строки и отрицательные индексы
- •§7.3. Перебор и цикл for
- •§7.4. Срезы строк
- •§7.5. Сравнение строк
- •§7.6. Строки нельзя изменить
- •§7.7. Функция find
- •§7.8. Циклы и счётчики
- •§7.9. Модуль string
- •§7.10. Классификация символов
- •§10.2. Операции над словарями
- •§10.3. Методы словарей
- •§10.4. Использование псевдонимов и копирование
- •§10.5. Разряженные матрицы
- •§10.6. Подсказки
- •§10.7. Тип «длинное целое число»
- •§10.8. Подсчет букв
§5.6. Альтернативные ветки программы (Chained conditionals)
Условный оператор if имеет расширенный формат, позволяющий проверять несколько независимых друг от друга условий и выполнять один из блоков, поставленных в соответствие с этими условиями. В общем виде оператор выглядит так:
if |
ЛОГИЧЕСКОЕ УСЛОВИЕ 1 |
|
|
|
ПОСЛЕДОВАТЕЛЬНОСТЬ |
ВЫРАЖЕНИЙ |
_1 |
el |
Lf ЛОГИЧЕСКОЕ УСЛОВИЕ |
_2: |
|
|
ПОСЛЕДОВАТЕЛЬНОСТЬ |
ВЫРАЖЕНИЙ |
_2 |
el |
Lf ЛОГИЧЕСКОЕ УСЛОВИЕ |
_3: |
|
|
ПОСЛЕДОВАТЕЛЬНОСТЬ |
ВЫРАЖЕНИЙ |
_3 |
el |
зе: |
|
|
|
ПОСЛЕДОВАТЕЛЬНОСТЬ |
ВЫРАЖЕНИЙ |
N |
Работает эта конструкция следующим образом. Сначала проверяется первое условие и, если оно истинно, то выполняется первая последовательность выражения. После этого поток выполнения переходит строке, которая следует после условного оператора (т.е. за последовательностью выражений N). Если первое условие равно False, то проверяется второе условие (следующее после el if), и в случае его истинности выполняется последовательность 2, а затем снова поток выполнения переходит к строке, следующей за оператором условия. Аналогично проверяются все остальные условия. До ветки программы else поток выполнения доходит только в том случае, если не выполняется ни одно из условий.
Ключевое слово el if происходит от англ. «else if» - «иначе если». Т.е. условие, которое следует после него проверяется только тогда, когда все предыдущие условия ложны.
Чтобы было понятнее, напишем небольшую программу, иллюстрирующую использование условного оператора с альтернативными ветками.
choice = raw input( |
Input your |
choice, |
please |
(1 or 2) : ' ) |
if choice == "1": |
|
|
|
|
functionl() |
|
|
|
|
55
Ревизия: 170
Логические выражения, условия и рекурсия
elif choice == "2" |
|
function2() |
|
else: |
|
print "Invalid |
choice!" |
print "Thank you." |
|
Сначала программа просит пользователя ввести единицу или двойку, затем условный оператор проверяет введенное значение на равенство со строкой ' 1' (если не помните, функция raw_input() возвращает строковое значение). Если условие истинно, то вызывается функция functionl (), после чего программа выводит строку "Thank you. " и завершается; в противном случае значение переменной choice сравнивается со строкой ' 2 ': если условие выполняется, то вызывается функция function2 (), затем выводится строка "Thank you. " и программа завершается; иначе- программа выводит сообщение о том, что введенное значение некорректно, затем «благодарность» и завершается.
В англоязычной литературе такие разветвленные условные операторы обычно называют chained conditionals, т.е. цепочками условий.
Упражнение. Измените функцию compare (x, у) так, чтобы в ней использовался всего один оператор условия.
