Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[4]

для того, чтобы сделать такое представление не совсем уж плохим, используется множитель. Например, число 123456789123456789 будет иметь такой вещественный вид:

123456789123456789 и 1.2345678912345678 • 1017

Его можно будет записать в питоне так:

g=123456789123456789.

g=l.23456789123456789е17

Понятно, что если число имеет немного значащих цифр, но большой порядок, его запись в экспоненциальной форме наиболее легка. Сравните эти два присваивания:

h=100000000000000000000000000000000000000000000000000.

Они абсолютно эквивалентны, в чем легко убедиться, посчитав нули.

Побитовых действий над вещественными числами не производится также ввиду сложности их машинного представления. Арифметические действия выполняются без округления, хотя погрешность может возникнуть, если, например, результат содержит много разреженых чисел. Например:

1=1е-20

После этого т, как это ни печально, будет равно к, а вся добавочная часть в лице 1, способная на отдельное существование, канет в небытие.

В добавление к обычным операциям, для работы над вещественными числами написан специальный модуль под названием math. Подключив его, можно будет считать всевозможные синусы, косинусы и тангенсы с арктангенсами. Еще он позволяет правильно округлять числа и брать логарифмы. Помимо этого, модуль содержит две константы: е и тт. Модуль подключается ключевым словом import, и далее при использовании любого оператора и любой константы оттуда нужно к имени добавлять имя модуля. Список всего содержимого модуля можно получить удобной функцией dir:

»> import math

»> dir(math)

[ doc , name , acos, asin, atari, atan2, ceil, cos, cosh, e, exp, fabs, floor, fmod, frexp, hypot, ldexp, log, loglO, modf, pi, рои, sin, sinh, sqrt, tan, tanh]

»> math.cos(math.pi)

»>


3.6Комплексные числа

Питон имеет встроенную поддержку комплексных чисел. Их можно задавать двумя способами: прямым или же функцией complex. Делается это так:

p=complex(2,l)

Эти две строчки эквивалентны. Обратите внимание на то, что в питоне мнимая единица обозначается маленькой латинской j и никак иначе. Причем эта буква вопринимается таким образом только если написана напосредст-венно после числа, поэтому даже в нашем случае нужно писать lj, а не j-

Обе части комплексного числа (как реальная, так и мнимая) считаются вещественными, даже если заданы в виде целого числа. Комплексное число без мнимой части не перестает быть комплексным числом.

Все приемы работы с комплексным числом можно узнать той же функцией dir, дав ей комплексное число в качестве аргумента. Они включают: real для получения реальной части числа, imag соответственно для мнимой и conjugate() для получения комплексного числа, сопряженного данному. Модуль комплексного числа (как и модуль любого другого) можно получить функцией abs().

3.7Связь между числами, связь между операциями

Если в одном и том же выражении встречаются несколько типов чисел, то результат имеет самый сильный тип из всех встречающихся в выражении. Самым сильным числовым типом считается комплексный, за ним идет вещественный, затем длинный целый и только потом целый. Таким образом, присутствие дробной части считается более важным, чем точность большого числа. Стоит быть осторожным, если для вас это не так, и округлять все вещественные числа перед добавлением к длинным целым.

Если в одном и том же выражении встречаются несколько операций, то они, конечно, выполняются все, причем в определенной последовательности. Она жестко определяется приоритетами операций и порядком их следования в выражении. Приоритеры таковы: самый высокий у возведения в степень, затем идет логическое отрицание, затем вместе умножение и деление, и только потом сложение и вычитание, после них конъюнкция, потом исключающая дизъюнкция, и лишь после неё обычная дизъюнкция. В случае равных приоритетов вычисление идет слева направо. Для изменения этого порядка выполнения используются скобки. Их следует использовать во всех сомнительных ситуациях, не перекладывая основной смысл выражения на приоритеты.


3.8 Строки

Вообще говоря, мы уже закончили рассмотрение всех тех типов, которыми ограничивался набор типов данных в автокодах и даже первых языках программирования. Но вскоре стало очевидным, что не менее важна в прикладных программах возможность обработки нечисловой информации. Сегодня, конечно, количество текстовых редакторов и процессоров, систем управления базами данных, программ-переводчиков и прочих пакетов символьной обработки существенно превосходит количество сугубо математических пакетов.

С точки зрения разработчика программного обеспечения обработка текста чрезвычайно сложна из-за разнообразия естественных языков и способов их записи. С точки зрения языков программирования обработка текста куда проще, так как подразумевается, что в языке набор символов представляет собой короткую и упорядоченную последовательность значений. Фактически, за исключением языков с большим числом букв (восточных: китайского, японского) и языков с большим числом начертаний одной и той же буквы (семитских: арабского, мальтийского) хватает 256 значений одного байта. Последнее время всё чаще используется Уникод (Unicode) - двухбайтовая кодировка, содержащая сразу все мыслимые символы.

Строки в питоне не сильно напоминают строки в других языках программирования засчет отсутствиея типа символ. Обычный способ задания строкового типа состоит во введении символа и представления строк как последовательностей (массивов) символов. В питоне же символ - это строка длины 1. Таким образом, нет смысла во введении двух разных символов: обычного и уникодового, символ мы можем рассматривать как элемент соответствующей строки и не более того.

Итак, раз уж мы не можем сказать, что строка есть последовательность символова, придется признать такое определение: строка есть нечто, заключенное в кавычки. Обычно используют двойные кавычки, если строка содержит одинарные внутри себя и одинарные в противном случае. Вот примеры присваивания строк:

а="строка"

Ь=ешеиоднаистрока

с=Онисказал:и"Да"

d="0Xapa"

Конечно, рано или поздно должна будет встретиться строка, содержащая оба типа кавычек. Что же делать в этом случае? Есть еще обратные кавычки, но они уже нагружены другим смыслом, о котором чуть ниже. Поэтому используется так называемая маскировка - перед запретным символом ставится обратный слэш:

e="Isnt\tuit?"u-uSheuasked.

f="\"Ituis\"u-uheureplied."

Видно, что маскировка - это не только средство разрешения конфликтов между кавычками, но и просто удобный в некоторых ситуациях механизм. Вообще, программист не сильно связан в этом вопросе и может по своему



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13]