- •§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. Подсчет букв
§10.7. Тип «длинное целое число»
Питон предоставляет тип названный long int, который может хранить целые числа любого размера. Есть два пути создать значение типа long int. Первый- написать целое число с заглавной L в конце.
>» type (1L)
<type 'long int'>
Другой способ - использовать функцию long () чтобы преобразовать значение к типу long int. Функция long () может принимать любые численные типы и даже строки цифр:
>» |
long |
(1) |
1L |
|
|
>» |
long |
(3.9) |
3L |
|
|
>» |
long |
('57') |
57L |
|
|
Все математические операции работают с long int, значит, нам не придется сильно переделывать нашу функцию f ibonacci () :
>» previous = {0:1L, 1:1L}
>» fibonacci (50)
20365011074L
Простым изменением начального содержимого словаря, мы изменяем поведение функции. Первые два числа в последовательности long int, поэтому все последующие числа в последовательности тоже.
Упражнение. Измените функцию factorial () так, чтобы она возвращала результат типа long int. Протестируйте ее.
§10.8. Подсчет букв
В упражнении главы 7 мы написали функцию countLetters, которая подсчитывала число вхождений буквы в строку. Более общий вариант этой задачи - построение гистограммы букв в строке, то есть вычисление, сколько раз каждая буква появляется в строке. Такие гистограммы могут пригодиться для частотного анализа - одного из метода расшифровки кодов простой замены (например, шифра Цезаря)17, или для компрессии текстовых файлов. Так как различные буквы появляются с различными частотами, мы можем
17 Кстати, метод частотного анализа использовал Шерлок Холмс для того, чтобы прочестьтекст зашифрованный с помощью «пляшущих человечков».
91
Ревизия: 170
Словари
сжать файл, используя короткие коды для распространенных букв и длинные коды для букв, которые появляются менее часто (алгоритм Фано, алгоритм Хемминга и другие).
Словари предоставляют элегантный способ создавать гистограммы:
>» |
letterCounts = {} |
|
|
|
|
>» |
for letter in "Mississippi": |
|
|
|
|
|
letterCounts[letter] = letterCounts |
. get |
(letter, |
0) |
+ 1 |
>» |
letterCounts |
|
|
|
|
{ 'М |
: 1, 's': 4, 'p': 2, 'i': 4} |
|
|
|
|
Мы начинаем с пустого словаря. Для каждой буквы в строке мы находим текущий счетчик (возможно нулевой) и увеличиваем его на единицу. В конце словарь содержит пары: буквы и их частоты.
Для красоты можно вывести гистограмму в алфавитном порядке с помощью методов
items() и sort():
>» letterltems = letterCounts |
items |
0 |
>» letterltems . sort () |
|
|
>» print letterltems |
|
|
[('M\ 1), ('i\ 4), ('p\ 2), |
Cs', |
4)] |
[NOTE: непонятная фраза:]
Вы встречались с методом items () ранее, но метод sort () - первый метод который вы применяете к спискам. Есть другие методы списков, включая append (), extend () и reverse (). Еще раз просмотрите справку (функция help () ) для получения их детального описания.
92
Ревизия: 170
Файлы и обработка исключений
Глава 11. Файлы и обработка исключений
93
Ревизия: 170
Классы и объекты
Глава 12. Классы и объекты
94
Ревизия: 170
Классы и функции
Глава 13. Классы и функции
95
Ревизия: 170
Методы
Глава 14. Методы
96
Ревизия: 170
Наборы объектов
Глава 15. Наборы объектов
97
Ревизия: 170
Наследование
Глава 16. Наследование
98
Ревизия: 170
Связные списки
Глава 17. Связные списки
99
Ревизия: 170
Стеки
Глава 18. Стеки
100
Ревизия: 170
Очереди и очереди с приоритетами
Глава 19. Очереди и очереди с приоритетами
101
Ревизия: 170
Деревья
Глава 20. Деревья
102
Ревизия: 170
Функциональное программирование
Глава 21. Функциональное программирование
103
Ревизия: 170
Заключение. С высоты птичьего полета
Заключение. С высоты птичьего полета
«Ты можешь подняться выше, Джонатан, потому что ты учился. Ты окончил одну школу, теперь настало время начать другую»
Р. Бах, « Чайка по имени Джонатан Ливингстон».
104
Ревизия: 170
Советы по отладке программ
Приложение А. Советы по отладке программ
105
Ревизия: 170
Создание и использование модулей
Приложение В. Создание и использование модулей
106
Ревизия: 170
Создание типов данных
Приложение С. Создание типов данных
107
Ревизия: 170 Написание программ с графическим интерфейсом
Приложение D. Написание программ с графическим интерфейсом
108
Ревизия: 170 Методологии командной разработки
Приложение Е. Методологии командной разработки
109
Ревизия: 170 Методические указания преподавателям
Приложение F. Методические указания преподавателям
по
