Рубрики
Без рубрики

Резюме: информатика и программирование в Python – Часть 02

Резюме: информатика и программирование в Python – часть 02. Теги с новичками, учебником, Python.

вступление

На моем пути обучения на публике я пытаюсь научиться как можно более эффективным. Материалы должны соответствовать моим потребностям, но я не хочу тратить время, испуская, изучая бесполезные вещи.

Поэтому я решил посмотреть на Компьютерная наука и программирование в 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. Напишите всю программу
  2. Тестируйте всю программу
  3. Отладить всю программу

ДЕЛАТЬ

  1. Написать одну функцию
  2. Агрегат тестирует эту функцию
  3. Отладить эту функцию
  4. Тест интеграции
  5. повторить от 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”