Совсем недавно, был наглядно рассмотрен такой тип данных как числа. В данном посте мы рассмотрим как можно болше возможностей работы с числами. Смотрим ниже:
К примеру создадим переменные которые содержат в себе число:
>>>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
К примеру создадим переменные которые содержат в себе число:
>>>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
Комментариев нет:
Отправить комментарий