Числовые типы и работа с ними
Целые числа
- Не ограничены сверху
Число:
- Абстракция (например, «натуральное число»)
- Модель (например, «1 бит знака и 63 бита само число в двоичном виде»)
- Представление (например, в десятичном виде)
⇒ не бывает «десятичных чисел», «двоичных чисел» и т. п., только текстовое представление в соответствующей системе счисления
- (а то ведь можно и римскую систему счисления замутить)
Системы счисления
Функция bin(число) — возвращает строку (см. «представление» выше)
есть ещё hex() и oct()
- Обратное тоже есть: константы в другой системе счисления
Конструктор int():
(если достаточно знаний) Побитовые операции
Упражнение: посчитать сумму цифр трёхзначного числа
Идея алгоритма: остаток отделения на 10 — это последняя цифра, целочисленное деление на 10 (т. е. x // 10) отбрасывает последнюю цифру (проверим это)
Сформулируем алгоритм на русском
Напишем программу
Вещественные числа
- Ограниченная точность и диапазон
- Формат представления констант:
С фиксированной точкой 123.3456
С плавающей точкой: мантиссаEпорядок
Упражнение: ввести нужные переменные, вычислить и вывести формулу (xy — это x · y):
$$(x+y)/(y+1)-(xy-12)/(34+x)$$
Другие формулы: Задача 6.1.1
Модуль math
- Использование:
1 >>> dir()
2 ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
3 >>> from math import *
4 >>> dir()
5 … (много) …
6 >>> pi
7 3.141592653589793
8 >>> sin(pi/2)
9 1.0
10 >>> sin(pi/4)
11 0.7071067811865475
12 >>> sin(pi/4) ** 2
13 0.4999999999999999
14 >>> round(sin(pi/4) ** 2, 10)
15 0.5
16 >>> sin(pi/4) ** 2 == 1/2
17 False
18 >>> isclose(sin(pi/4) ** 2, 1/2)
19 True
20
- Точность вычислений (достаточная!)
- Понятие погрешности. Откуда она берётся?
Опасность прямого сравнения на == (тем не менее!)
Упражнение: ввести нужные переменные, вычислить и вывести формулу
$$(1+sin sqrt(x+1))/cos(12y-4)$$
Другие формулы: Задача 6.1.1
Упражнение: модифицировать предыдущую программу так,чтобы она не выдавала ошибок (проверить область определения квадратного корня)
(Если будет время) Рациональные и строчно-десятичные числа
Д/З
Отщёлкать Третье занятие учебника и решить все задачи (да, все 16, они простые)
Скопировать решения в соответствующие файлы и проверить, что они всё ещё работают!
Имена файлов — от prog_3_1.py до prog_3_16.py
Прислать эти 16 файлов в виде шестнадцати приложений к одному письму по адресу <uneexlectures AT cs DOT msu DOT ru>
В поле Subject должно быть «слово» PhilosoPython2022 (другие слова тоже можно ☺)