Понятие управляемого вычислителя
(0) Введение, усушка, утруска
(5) Понятие командной строки (команда → интерпретация → выполнение → диагностика →)
(10) Консольная командная строка
Подсказки (>>>, ...)
- Примеры:
Что-то бессмысленное blablabla, +-;
Число 123, 5e5;
Строка "blablabla";
Команда, которая началась и не закончилась if 1:, '''bla (нужно ^C);
Случайно возникшая арифметическая операция 7*8.
(15) «Калькулятор»
Целые числа 123, -7;
Вещественные числа 0.1, .00001, 456.;
Арифметические операции 2+3, 2+3.0, 2*3, 2-3, 3/2, 3//2, 3**4, 27%4, 36**0.5;
Скобки и старшинство операций (возведение в степень, умножение/деление/остаток от деления, сложение/вычитание) 3*(2+1), 3*2+1, 2*3**4, (2*3)**4, 2**3**4, 2**(3**4), (2**3)**4;
Длинные целые 123566789876543212345567788909876543212345678*1234567890987654321234567890987, 12345**12345
- Точность вещественных чисел:
- Представимы только рациональные числа (целочисленные дроби)
Стандартный тип float и того хуже (не может быть бесконечным, например, 1/3 — это 0.33333333…, и вот это … должно где-то кончиться)
1.1+2.2, 1.123455678898766544321
(25) Строки и простейшие операции над ними (сложение и умножение на число)
"wer". 'sadf'+'|'+'QWE', "QQ! "*4
(30) Типы объектов (пока знаем целые, вещественные, строки и функции), функция type()
type(объект каждого типа): type(324), type(2.234), type("DFTG"), type(type)
отличие '1234' от 1234
(35) Использование функций
преобразование типов int(), float(), str()
int(123.876), float(1), str(123), int("123"), int("asdfgt"), int("2134.123"), float("2134.123")
(некоторые) стандартные abs(), max(), round(), bin(), hex() …)
abs(-234), max(23,78). max(23,78.345,-4,7.234,3,7), max(1,"2",3), round(123.876) (ср. int(123.876))
тип bin() и hex() — строковый: bin(9), bin(77), bin(127) (попробуйте сразу сказать, сколько), hex(12), hex(48), hex(3735928559)
(45) Использование (некоторых) математических функций с помощью from math import *
pi, e
sqrt() (квадратный корень), exp() (e в степени)
sin(), cos(), tan() (в радианах!)
sin(pi/2), sin(pi//2) (в чём разница?), cos(0), cos(pi/4), sqrt(2)/2 (или 2**(1/2)/2), tan(pi/4)
factorial(), log(), log(a, основание), …
factorial(6), factorial(100) (откуда столько 0 в конце?), log(e*e*e), log(4096,4), log(111,10)
(55) Тип bool, операции сравнения
True и False
обычные <, >, <=, >=, !=, ==
2 < 5, 345 == 345.0, 234 != 234, 76.333 >= 123
многоместные вида a < b < c < d (это a<b and b<c and c<d, т. е. выполнение всех сравнений одновременно)
34 == 34 == 34, 4 < 6 < 8, 22 >= 11 >= 11, 1 < 2 < 3 < 1 < 5 < 6
как работает 1 != 2 != 1 ?
(65) лексикографическое (поэлементное) сравнение строк:
- Начинаем с нулевых элементов обеих строк
Если элемент первой строки больше (меньше) элемента второй (стоит раньше в алфавите), первая строка больше (меньше) второй, готово
Если одна из строк закончилась, она меньше, готово
Если обе строки закончились, они равны, готово
- Берём следующие элементы строк, и повторяем с п. 1
"qwe" == "qwe", "asdfg" < "asdfgaaaa", "qwe" > "asdasdasd", (большие буквы неожиданно меньше маленьких) "QWE"<"qwe
(70) Создание объектов при вычислении выражения
- константа — создание объекта
- атомарное выражение — создание объекта
- удаление ненужных объектов
- командная строка: вывод последнего
примеры (сколько объектов было создано): 5 (1), 5+3 (3), sin(pi/3) (3: pi было, 3 — 1, pi/3 — 2, sin(pi/3) — 3)
(80) последовательные вычисления в командной строке с ручным копированием промежуточных результатов
123+34*24 — это 34*24 и 123+816
sin(pi/4)**2 — это pi/4, sin(0.7853981633974483) и 0.7071067811865475**2
sqrt(abs(cos((1.23+0.345)*2)))+1 — это 1.23+0.345, 1.575*2, cos(3.15), abs(-0.999964658471342), sqrt(0.999964658471342)
Д/З
Для произвольных заранее заданных x, y и z (например, 1.1, 2.2 и 3.3) вычислить два выражения
Обратите внимание на то, как называются соответствующие функции в модуле math (например, atan вместо arctg и т. п.)