- •§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. Подсчет букв
§2.8. Порядок операций
Большинство языков программирования позволяют группировать в одном выражении несколько операций. Это удобно, например, если нужно посчитать процентное соотношение двух величин:
30
Ревизия: 170
Переменные, операции и выражения
>» print 100 * 20 / 80, "%"
25 %
В этом примере рассчитывается процентное соотношение двух чисел: 2 0 и 8 0. После результата выражения выводится символ % - интерпретатор вычисляет арифметическое выражение и выводит результат, а затем дописывает строку, стоящую после запятой.
Когда в выражении более одного оператора, последовательность выполнения операций зависит от порядка их следования в выражении, а также от их приоритета. Приоритеты операторов в Питоне полностью совпадают с приоритетами математических операций.
Самый высокий приоритет у скобок, которые позволяют изменять последовательность выполнения операций. Таким образом, операции в скобках выполняются в первую очередь. Например, 2* (3-1) равно 4, (1+1)**(5-2)-8. Скобки удобно использовать и для того, чтобы выражения было легче читать, даже если их наличие в выражении никак не отражается на результате: (100*20)/80.
Следующий приоритет у операции возведения в степень, поэтому 2**1+1 равно 3, а не 4, и выражение 3*1**3 даст результат 3, а не 27.
Умножение и деление имеют одинаковый приоритет, более высокий, чем у операций сложения и вычитания. 2*3-1 равно 5, а не 4; 2/3-1 равно -1, а не 1 (результат целочисленного деления 2/3=0).
Операторы с одинаковым приоритетом выполняются слева направо. Так что в выражении 100*20/80 умножение выполняется первым (выражение приобретает вид 2 000/8 0); затем выполняется деление, выдающее в результате значение 2 5. Если бы операции выполнялись справа налево, то результат получился бы другим.
Упражнение. Измените выражение 100*20/80 так, чтобы последовательность выполнения операций была обратной. Какой результат вы получили после его выполнения и почему?
§2.9. Простейшие операции над строками
Вообще говоря, над строками нельзя производить те же операции, что и над числами, поэтому следующие примеры работать не будут:
|message-l~ "Hello"/123 "Hello"*"world!" "15"+2
Но оператор + работает со строками, хотя обозначает другую операцию: конкатенацию или сцепление строк.
>» strl = "Hello"
>» str2 = " world"
>» print strl + str2 + "!"
Hello world!
Обратите внимание, что вторая строка начинается с пробела. Пробел такой же символ, как и любой другой.
Оператор * тоже можно использовать по отношению к строкам, но при условии, что одним из операндов будет целое число. В этом случае оператор * символизирует операцию повторения строки (или итерацию). Например, ' Fun' *3 выдаст результат ' FunFunFun'.
31
Ревизия: 170
Переменные, операции и выражения
Можно проследить аналогию между операциями над числами и операциями над строками: так же, как 4*3 эквивалентно 4 + 4 + 4, ' Fun' *3 эквивалентно ' Fun' + ' Fun' + ' Fun'. Но с другой стороны, конкатенация и повторение имеют несколько существенных отличий от сложения и умножения.
Упражнение. Все операции в математике классифицируются по их свойствам (коммутативность, ассоциативность и т.п.). Какими свойствами, присущими сложению и умножению, не обладают конкатенация и повторение?
Не ленитесь заглянуть в математический справочник - понимание свойств объектов, которыми оперируете, даст вам большие преимущества.
Упражнение. Какой результат будет получен после выполнения выражения "hello"+ " world" *3?Какие выводы можно сделать на основе этого результата?
