Примерный распорядок дня

Тематический план

Предполагается последовательно проходить этот план, расставляя пометки, сколько удалось сделать за день.

Рекомендации по самостоятельному изучению

День 1

День 2 (4 июля)

День 3 (5 июля)

День 4 (6 июля)

Функции (введение)

Методы объектов; модули

Строки и их методы

Списки и их методы

День 5 (7 июля)

Ещё немного обо всём

Про random

Про черепаху

Немного про eval()

Осознать природу функции eval() https://docs.python.org/3/library/functions.html?highlight=eval#eval

  • {*} Упражнение: ввести *в виде строки* произвольную формулу от x (в ней могут встречаться функции из math), ввести x, вывести (с помощью eval()) результат её вычисления

  • Решить предыдущее упражнение, написав *функцию* f(x): , при этом сама программа должна выглядеть примерно так:

formulae = input()
x = float(input())
print(f(x))

(очевидно, в этой функции будет исполозовано голбальное имя formulae и eval())

Рисуем график дальше

  • Вспомнить про аффинные преобразования координат. Из них нам нужно движение и перенос, а поворот не нужен. Если не вспоминается — не страшно. Общая идея
    • Есть вещественное число X на отрезке A…B. Нам нужно получить число P на отрезке Q…R, которое делит это отрезок в той же пропорции
    • Записать пропорцию и вывести из неё формулу P=что-то-там-от-X
  • Написать функцию scale(L,M,X,Q,R), которая по числу X на отрезке L…M вычисляет число P на отрезке Q…R, делящее этот отрезок в той же пропорции
  • scale(L,M,L,Q,R) == Q, scale(L,M,M,Q,R) == R, (подсказка) scale(L,M,(L+M)/2,Q,R) == (Q+R)/2
    • (спойлер!) вычесть начало старого отрезка (получится что-то от 0), поделить на длину отрезка (получится что-то от 0 до 10), умножить на длину нового отрезка, прибавить его начало
  • Осознать, что это более общий вариант функции diap()
    • Переписать «график синуса» с использованием scale() вместо diap()
    • Переписать его далее, с использованием scale() вместо тупого умножения X и Y кооринат (размер экрана мы, допустим, знаем, что-то типа -400,400/-300,300 или как-то так, проверить)
      • график наконец-то будет располагаться по центру
  • Попробовать вводить не только диапазон, но и саму формулу (см. выше упражнение про функцию f()), поначалу эта формула == "f(x)", с ней должно работать хорошо
  • Осознать, что
    • Область значений sin(x) — -1…1, а других формул — нет :)

    • Для того, чтобы нарисовать график произвольной функции на отрезке, надо знать диапазон её значений на этом отрезке
      • этот диапазон использовать в scale() при вычислении y-координаты очередной точки на экране
      • Можно, например, запустить цикл с вычислением функции на всех точках, но не рисовать ничего, а только искать минимум и максимум значений (Q и R), а потом уже запустить его ещё раз и рисовать, зная Q и R
  • Переписать программу так, чтобы
    • В цикле создавался список значений функции на отрезке (назовём его g[])
    • Тогда минимум и максимум — это просто min(g) и max(g) (спасибо, Питон!)
    • Можно и список x-ов тоже генерировать, чобы два раза не вычислять
  • Украсить
    • Нарисовать оси координат
    • Написать, где X, где Y
    • Написать, что за функция

О рекурсии

Различные интересные модули

  • random

  • turtle


TODO Здесь пока не разобрано

- Python (рассмотрено)

  • - методы объектов, dir(объект) — введение - методы списков

- Python (рассмотрено)

  • - строки и их методы - форматирование строк

- Python

  • словари
  • globals(), locals(), распаковка/запаковка именованных параметров

- Python

  • Генераторы, конструкторы генераторов

- Python

  • Модули как пространства имён
  • - Классы, …, перегрузка операций

- Python

  • - Ещё классы, объектное планирование и ООП

- Python / OS

  • - модули os, sys; написание кроссплаформенных приложений

- Python / OS

  • - модуль subprocess