4 сентября 2012 г.

Все что можно делать с числами

Совсем недавно, был наглядно рассмотрен такой тип данных как числа. В данном посте мы рассмотрим как можно болше возможностей работы с числами. Смотрим ниже:

К примеру создадим переменные которые содержат в себе число:
>>>a=3
>>>b=4
Далее будем производить над ними какието действия:



>>>a + 1, a - 1 #сложение (3+1), вычитание (3-1)
(4, 2)

>>>b * 3, b / 2 # умножение, деление
(12, 2.0)

>>>a % 2,b ** 2 # деление по модулю, возведение в степень
(1, 16)

>>>2 + 4.0, 2.0 ** b # смешивание типов...
(6.0, 16.0)

>>> b / 2 + a  # ((4 / 2) + 3)
5.0

>>>print(b/(2.0+a)) # (4 / (2.0 + 3))
0.8


>>> num = 1 / 3.0
>>> num            # Автоматический вывод
0.33333333333333331
>>> print num      # Инструкция print выполняет округление
0.333333333333

>>> “%e” % num     # Вывод с использованием выражения форматирования строк
‘3.333333e-001’
>>> ‘%4.2f’ % num  # Альтернативный формат представления вещественных чисел
‘0.33’
>>> ‘{0:4.2f}’.format(num) # Метод форматирования строк (Python 2.6 и 3.0)
‘0.33’


>>> num = 1 / 3
>>> repr(num) # Используется для автоматического вывода: в форме как есть
‘0.33333333333333331’
>>> str(num)  # Используется функцией print: дружественная форма
‘0.333333333333’


>>> 1 < 2      # Меньше чем
True
>>> 2.0 >= 1   # Больше или равно: число 1 преобразуется 1.0
True
>>> 2.0 == 2.0 # Проверка на равенство значений
True
>>> 2.0 != 2.0 # Проверка на неравенство значений
False





>>> X = 2
>>> Y = 4
>>> Z = 6
>>> X < Y < Z  # Составная операция сравнения: принадлежность диапазону
True
>>> X < Y and Y < Z
True
>>> X < Y > Z
False
>>> X < Y and Y > Z
False
>>> 1 < 2 < 3.0 < 4
True
>>> 1 > 2 > 3.0 > 4
False

Деление: классическое, с округлением вниз и истинное
X / Y
Классическое и истинное деление. В Python 2.6 и в более ранних версиях этот оператор выполняет операцию классического деления, когда дробная часть  результата  усекается  при  делении  целых  чисел  и  сохраняется  при делении вещественных чисел. В Python  3.0  этот выполняет операцию истинного деления, которая всегда сохраняет дробную часть независимо от типов операндов.
X // Y
Деление с округлением вниз. Этот оператор впервые появился в Python 2.2 и доступен в обеих версиях Python, 2.6 и 3.0. Он всегда отсекает дробную часть, округляя результат до ближайшего наименьшего целого независимо от типов операндов.

C:\misc> C:\Python30\python
>>>
>>> 10 / 4    # Изменился в версии 3.0: сохраняет дробную часть
2.5
>>> 10 // 4   # В версии 3.0 действует так же: усекает дробную часть
2
>>> 10 / 4.0  # В версии 3.0 действует так же: сохраняет дробную часть
2.5
>>> 10 // 4.0 # В версии 3.0 действует так же: округляет вниз
2.0
C:\misc> C:\Python26\python
>>>
>>> 10 / 4
2
>>> 10 // 4
2
>>> 10 / 4.0
2.5
>>> 10 // 4.0
2.0

X = Y // Z     # Всегда усекает, для целочисленных операндов всегда возвращает
                     # целочисленный результат в обеих версиях, 2.6 и 3.0
X = Y / float(Z)  # Гарантирует вещественное деление с сохранением дробной 
                          # части в обеих версиях, 2.6 и 3.0

C:\misc> C:\Python26\python
>>> from __future__ import division  # Включает поведение “/” как версии 3.0
>>> 10 / 4
2.5
>>> 10 // 4
2

Округление вниз и усечение дробной части
Разницу можно наглядно продемонстрировать, обратив-
шись к модулю math (прежде чем использовать модуль, его необходимо импор
тировать, но подробнее об этом мы поговорим позже):
>>> import math
>>> math.floor(2.5)
2
>>> math.floor(-2.5)
-3
>>> math.trunc(2.5)
2
>>> math.trunc(-2.5)
-2

Битовые операции
>>> x = 1         # 0001
>>> x << 2       # Сдвиг влево на 2 бита: 0100
4
>>> x | 2           # Побитовое ИЛИ: 0011
3
>>> x & 1         # Побитовое И: 0001
1
Другие встроенные средства для работы с числами

>>> import math
>>> math.pi, math.e                        # Распространенные константы
(3.1415926535897931, 2.7182818284590451)
>>> math.sin(2 * math.pi / 180)          # Синус, тангенс, косинус
0.034899496702500969
>>> math.sqrt(144), math.sqrt(2)              # Квадратный корень
(12.0, 1.4142135623730951)
>>> pow(2, 4), 2 ** 4                     # Возведение в степень
(16, 16)
>>> abs(-42.0), sum((1, 2, 3, 4))   # Абсолютное значение, сумма 
(42.0, 10)
>>> min(3, 1, 2, 4), max(3, 1, 2, 4)         # Минимум, максимум
(1, 4)

>>> math.floor(2.567), math.floor(-2.567) # Округление вниз 
(2, -3)           # (до ближайшего наименьшего целого)
>>> math.trunc(2.567), math.trunc(-2.567) # Усечение 
(2, -2)           # (отбрасывание дробной части)

>>> int(2.567), int(-2.567)               # Усечение 
(2, -2)                                   # (преобразование в целое число)
>>> round(2.567), round(2.467), round(2.567, 2) # Округление ( в Python 3.0)
(3, 2, 2.5699999999999998)
>>> ‘%.1f’ % 2.567, ‘{0:.2f}’.format(2.567) # Округление при отображении 
(‘2.6’, ‘2.57’)  

Три способа вычесление квадратных корней:
>>> import math
>>> math.sqrt(144)        # Функция из модуля math
12.0
>>> 144 ** .5             # Выражение
12.0
>>> pow(144, .5)          # Встроенная функция
12.0
>>> math.sqrt(1234567890) # Большие числа
35136.418286444619
>>> 1234567890 ** .5
35136.418286444619
>>> pow(1234567890, .5)
35136.418286444619

Random:
>>> import random
>>> random.random() # получаем случайное число от 0 до 1
0.44694718823781876
>>> random.random()
0.28970426439292829
>>> random.randint(1, 10) #от 1 до 10
5
>>> random.randint(1, 10)
4
Получаем случайный объект в списке
>>> random.choice([‘Life of Brian’, ‘Holy Grail’, ‘Meaning of Life’]) 
‘Life of Brian’
>>> random.choice([‘Life of Brian’, ‘Holy Grail’, ‘Meaning of Life’])
‘Holy Grail’


Глобальная настройка точности:
>>> import decimal
>>> decimal.Decimal(1) / decimal.Decimal(7)
Decimal(‘0.1428571428571428571428571429’)
>>> decimal.getcontext( ).prec = 4
>>> decimal.Decimal(1) / decimal.Decimal(7)
Decimal(‘0.1429’)
Простой пример:
>>> 1999 + 1.33
2000.3299999999999
>>>
>>> decimal.getcontext().prec = 2
>>> pay = decimal.Decimal(str(1999 + 1.33))
>>> pay
Decimal(‘2000.33’)

Рациональные числа:

>>> from fractions import Fraction
>>> x = Fraction(1, 3)     # Числитель, знаменатель
>>> y = Fraction(4, 6)     # Будет упрощено до 2, 3 с помощью функции gcd
>>> x
Fraction(1, 3)
>>> y
Fraction(2, 3)
>>> print(y)
2/3

>>> x + y
Fraction(1, 1)
>>> x – y        # Точный результат: числитель, знаменатель
Fraction(-1, 3)
>>> x * y
Fraction(2, 9)

>>> Fraction(‘.25’)
Fraction(1, 4)
>>> Fraction(‘1.25’)
Fraction(5, 4)
>>>
>>> Fraction(‘.25’) + Fraction(‘1.25’)
Fraction(3, 2)

>>> a = 1 / 3.0 # Точность ограничивается аппаратными средствами
>>> b = 4 / 6.0 # В процессе вычислений точность может быть потеряна
>>> a
0.33333333333333331
>>> b
0.66666666666666663
>>> a + b
1.0
>>> a - b
-0.33333333333333331
>>> a * b
0.22222222222222221






Комментариев нет:

Отправить комментарий