вступление
На моем пути обучения на публике я пытаюсь научиться как можно более эффективным. Материалы должны соответствовать моим потребностям, но я не хочу тратить время, испуская, изучая бесполезные вещи.
Поэтому я решил посмотреть на Компьютерная наука и программирование в Python Отказ
Я не знаю, слишком ли это слишком легко для меня, потому что я знаю большую часть материала компьютерных наук, но, следовательно, я решил использовать курс с Python, потому что я только новые основы этого. Если это слишком легко, я иду быстрее.
Ссылки
Я Создан список Со всеми ссылками на резюме, видео и слайды.
Существует также ссылка на REPO GitHub, я приглашаю вас сделать запрос на тягу, если вы видите некоторые опечатки.
Резюме
05. Кортежи, списки, псевдонимы, мультипликация, клонирование
Составные типы данных
- состоит из других типов данных
Кортежи
- Заказанная последовательность (смешанные) элементы
- неизменный
- Создание:
()
- Swap:
(A, B) = (б, а)
- потенциал
Списки
- Заказанная последовательность (смешанные) элементы
- музей
- Создание:
[]
- потенциал
- Добавить элемент:
A.Append (B)
- Списки CONCAT:
A.extend (b)
- Удалить элемент:
del (a [индекс])
- Сортировка списка:
A.SORT ()
- Обратный список:
a.reverse ()
- Строка в списки и вице-версию:
Сплит ()
,присоединиться()
Псевдонимы, подвеска, клонирование
- Переменная имен указывает на объект, например персона
- Многие разные переменные могут указывать на тот же объект, например, У человека есть несколько прозвище
- Если вы измените объект (=> объект человека), любая переменная (=> любой псевдоним), указывая на этот объект подвергается воздействию
=> Побочные эффекты!
- Список копирования:
Скопировать [:]
06. Рекурсия, Словари
Рекурсия
- процесс повторяющихся предметов самоназже
- Алгоритмично: способ разработки решений путем разрыва и покоря: уменьшить проблему для более простых версий той же проблемы
- семантически: методика программирования, где функция вызывает сама:
Базовый чехол + рекурсивный шаг
- например
Умножение A и B
поДобавление к себе B раз
- Каждый рекурсивный звонок к функции создает свой собственный объем
- Привязки переменных в объеме не изменяются путем рекурсивного вызова
- Поток управления проходит назад к предыдущему объему после того, как вызов функции возвращает значение
Итерация против рекурсии
# iteration def factorial_iter(n): prod = 1 for i in range(1, n+1): prod *= i return prod # recursion def factorial(n): if n == 1: return 1 else: return n * factorial(n-1)
- Рекурсия может быть проще, более интуитивно понятным
- Рекурсия может быть эффективной из точки зрения программиста
- Рекурсия может быть неэффективна с точки зрения компьютера
Индукция
- Чтобы доказать заявление, индексируемое на целых числах, верно для всех значений N:
- Доказать, что это правда, когда n – наименьшее значение (например, или)
- Затем докажите, что если это верно для произвольного значения n, можно показать, что он должен быть правдой для N + 1
Словари
- Хранить данные в качестве пар ключа
- Создание:
{}
- неупорядоченный
- Добавить элемент:
Dict [Newkey]
- Удалить элемент:
del (dict [ключ])
- Получить все ключи:
Dict.keys ()
- Получить все значения:
Dict.values ()
Список против словаря
- Список: Заказ <===> Дикто: неупорядоченный
- Список: соответствующий индекс для значения <=== > Dict: соответствует ценному ключу
- Список: поиск элемента по индексу (начинается с 0, увеличивается) <===> Dict: посмотрите элемент по ключу (все, что вам нравится)
07. Тестирование, отладки, исключения, утверждения
- Вы делаете суп, но жуки продолжают попасть из потолка. Что вы делаете?
- Держите крышку закрытой: Оборонительное программирование
- Проверьте суп для ошибок: тестирование
- Чистая кухня: отладка
Оборонительное программирование
- Разложение
- Абстракция
Тестирование
- Сравните пары ввода/вывода для спецификации
Типы
- Тест подразделения: проверьте каждую часть программы отдельно
- Регрессионный тест: поймать в реиндуцированные ошибки, которые ранее были исправлены
- Тест интеграции: тест Если общие программы работает
Подходы
- Тестирование черного ящика:
- Исследуйте пути через спецификацию
- можно повторно использовать, если внедрение внедрения
- может быть сделано кем-то, кроме исполнителем (предвзятости)
- Испытание стеклянного ящика:
- Исследуйте пути через код
- – называется Path-Complete Если каждый потенциальный путь через код проверяется хотя бы один раз
Отладка
- Исследование событий, ведущих к ошибке
- Крутая кривая обучения
- Цель состоит в том, чтобы иметь без ошибок программу
- инструменты:
- Распечатать с бислетом
- Прочитать сообщения об ошибках
- Логические ошибки: Думайте перед кодировкой, объясните код кому-то еще
Нет
- Напишите всю программу
- Тестируйте всю программу
- Отладить всю программу
ДЕЛАТЬ
- Написать одну функцию
- Агрегат тестирует эту функцию
- Отладить эту функцию
- Тест интеграции
- повторить от 1.
Исключение
- Обработка исключения: используйте попытку & кроме
- Никогда не проваливай молча
- вместо этого поднять исключение
Утверждения
- Утверждения не позволяют программисту контролировать ответ на неожиданные условия
- Убедитесь, что выполнение останавливается всякий раз, когда ожидаемое состояние не выполнено
- Обычно используется для проверки входов к функциям, но можно использовать где угодно
- Может использоваться для проверки выходов функции, чтобы избежать распространения плохих значений
- может облегчить поиск источника ошибки
- Цель состоит в том, чтобы обнаружить ошибки, как только введутся и ясно, где они произошли
- использовать в качестве дополнения к тестированию
- Поднять исключения, если пользователи поставляют плохие данные
- Используйте утверждения к:
- Проверьте типы аргументов или значений
- Убедитесь, что инварианты на структурах данных которые встретились
- Проверьте ограничения на возвратные значения
- Проверьте нарушения ограничений на процедуру (например, не дубликаты в списке)
08. Объектно-ориентированное программирование
Основы
- Python поддерживает много разных видов данных
- Каждый является объектом, и каждый объект имеет:
- тип
- внутреннее представление данных (примитивный или композитный)
- Набор процедур взаимодействия с объектом
- Объект является экземпляром типа:
123
является экземпляром INT,Привет
является примером строки - Все в Python – это объект (и имеет тип)
- может создавать новые объекты некоторых типов
- может обновить объекты
- Можно удалить объекты
- явно используя дель или просто «забыть» о них
- Система Python будет восстанавливать разрушенные или недоступные объекты – называется «сборка мусора»
Что такое объекты?
- Объекты – это абстракция данных, которые захватывают:
- Внутреннее представление: через данные атрибуты
- Интерфейс для взаимодействия с объектом:
- через методы (ака процедуры/функции)
- Определяет поведение, но скрывает реализацию
- Внутреннее представление должно быть частным
- Правильное поведение может быть скомпрометировано, если вы напрямую манипулируете внутреннее представление
Преимущества ООП
- Пакет данных в пакеты вместе с процедурами, которые работают над ними через интерфейсы
- Разделение – и поколение Развитие:
- внедрить и тестировать поведение каждого класса отдельно
- Увеличение модульности уменьшает сложность
- классы облегчают повторно использовать код
- Многие модули Python определяют новые классы
- У каждого класса есть отдельная среда (без столкновения на имена функций)
- наследование позволяет подклассу переопределить или расширить выбранное подмножество поведения суперкласса
Создание и использование ваших собственных типов с классами
- Сделайте различие между созданием класса и используя экземпляр класса
- Создание класса включает в себя:
- Определение имени класса
- Определение атрибутов классов
- Например, кто-то написал код для реализации класса списка
- Использование класса включает в себя:
- Создание новых экземпляров объектов
- делать операции на экземплярах
Что такое атрибуты?
- данные и процедуры, которые «принадлежат» к классу
- Атрибуты данных:
- думать о данных как другие объекты, которые составляют класс
- Например, координата состоит из двух чисел
- Методы (процедурные атрибуты):
- Подумайте о методах как функции, которые работают только с этим классом
- Как взаимодействовать с объектом
- Например, вы можете определить расстояние между двумя объектами координат, но не имеет значения на расстоянии между двумя списком объекты
- Определение того, как создать экземпляр: специальный метод в этом
- На самом деле создание экземпляра:
var_name (параметры)
.
Оператор используется для доступа к любому атрибуту (атрибут данных или метод) объекта- использовать
Isinstance ()
Чтобы проверить, является ли объект экземпляром класса
Сила Ооп
- Пакет вместе объекты, которые имеют:
- общие атрибуты и
- процедуры, которые работают на этих атрибутах
- Используйте абстракцию, чтобы сделать различие между тем, как реализовать объект VS, как использовать объект
- Создание слоев абстракций объектов, которые наследуют поведение от других классов объектов
- Создайте наши собственные классы объектов на вершине основных классов Python
Оригинал: “https://dev.to/miku86/summary-computer-science-and-programming-in-python-part-02-40il”