Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чаплыгин А.Н. Учимся програмировать вместе с Пи...doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

§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. Методические указания преподавателям

по