Похожие презентации:
данные (1)
1. Сальмянова Анна Сергеевна
Писать до 22:00(послеотвечу только на
следующий день)
2. Основные типы данных. Операции над ними. Преобразование типов данных.
3. Ключевые термины и определения
Тип данных — категория значений, определяющая множество допустимых операций над значением испособ его хранения в памяти (например, int, float, str, list).
Динамическая типизация — подход, при котором тип переменной не объявляется заранее, а
определяется во время выполнения программы по значению, которое ей присвоено. Одна и та же
переменная в разные моменты может ссылаться на объекты разных типов.
Литерал — способ непосредственной записи значения в исходном коде программы: 42, 3.14, "текст",
True, [1, 2, 3].
Изменяемый (мутабельный) объект — объект, содержимое которого можно изменить после создания,
не создавая новый объект (его id() остаётся прежним). Примеры: list, dict, set.
Неизменяемый (immutable) объект — объект, содержимое которого нельзя изменить после создания;
любая «модификация» фактически создаёт новый объект. Примеры: int, float, bool, str, tuple, frozenset.
4. Ключевые термины и определения
Оператор и операнд — оператор — символ или ключевое слово, обозначающее операцию (+, ==, and, in);операнд — значение, к которому оператор применяется.
Приведение (преобразование) типов — процесс превращения значения одного типа в значение
другого типа, например строки "25" в целое число 25.
Неявное преобразование (coercion) — автоматическое приведение типов, которое интерпретатор
Python выполняет сам, без явного вызова функции-конструктора (например, при вычислении 5 + 2.5).
Явное преобразование (casting) — приведение типа, которое программист выполняет сам с помощью
функций-конструкторов: int(), float(), str(), bool(), list() и др.
Истинность объекта (truthy / falsy) — свойство любого объекта Python интерпретироваться как True или
False в логическом контексте (в условии if, while, при вызове bool()).
Исключение (exception) — сигнал об ошибке, возникающей во время выполнения программы —
например, ValueError при попытке преобразовать нечисловую строку в число.
5. Теоретическая часть
1Зачем нужны
типы данных?
2
Где это
применяется
на практике?
3
Основные
встроенные
типы данных
Python
4
Неявное и
явное
преобразование
типов
5
Пошаговый алгоритм
безопасного
преобразования типа
6
Анализ сложности
операций над
типами данных (Big
O)
6.
Тип3
Изменяемость
Пример литерала
Типичные операции
int
неизменяемый
17, -3, 10**6
+ - * // % **
float
неизменяемый
3.14, 2.0, 1e-3
+ - * / **
bool
неизменяемый
True, False
and or not ==
str
неизменяемый
"текст"
+ (конкатенация), *, срез [
:]
Когда использовать
Счётчики, индексы,
целые величины
Дробные величины,
измерения, деньги*
Логические условия,
флаги
Текст,
идентификаторы, ввод
пользователя
Упорядоченная
list
изменяемый
[1, 2, 3]
append, insert, [i], срез
коллекция, часто
меняется
Фиксированный набор
tuple
неизменяемый
(1, 2, 3)
[i], срез, распаковка
значений, ключ
словаря
Связь «ключ dict
изменяемый
{"a": 1}
d[key], .get, .items()
значение», быстрый
поиск
set
изменяемый
{1, 2, 3}
in, объединение,
Уникальные элементы,
пересечение
быстрая проверка in
7.
Критерий4
Неявное
преобразование
Явное
преобразование
Кто
инициирует
интерпретатор
автоматически
программист вызывает
функцию
Когда
происходит
в смешанных
арифметических/логичес
ких выражениях
когда нужно превратить
строку/иной тип в
конкретный тип
Пример
5 + 2.5 -> 7.5 (float)
int("25") -> 25
Риск ошибки
минимальный — правила
ValueError / TypeError при
чётко определены
некорректных данных
языком
В Python неявное преобразование типов происходит автоматически (например, в
смешанных арифметических выражениях), а явное — выполняется программистом
вручную (через функции вроде int(), float() и др.), особенно при работе со строками из
внешних источников.
8.
1. Получить исходное значение (обычно строку — например,результат input()).
5
2. Убрать лишние пробелы по краям строки (strip()), если это
уместно.
3. Попытаться выполнить преобразование к целевому типу с
помощью int()/float()/... внутри блока try.
4. Если преобразование выполнено успешно — вернуть (или
использовать) полученное значение.
5. Если возникло исключение ValueError — перехватить его в
блоке except и вернуть предсказуемый результат (например,
None) или вывести понятное сообщение об ошибке, не прерывая
работу всей программы.
9.
ОперацияОбращение по индексу: list[i], str[i],
tuple[i]
Проверка вхождения x in list / x in str
6
Проверка вхождения x in set / x in
dict
list.append(x)
list.insert(0, x)
int(text) / float(text)
str(число)
Конкатенация строк s1 + s2
Сложность
O(1)
O(n)
O(1) в среднем
O(1)
амортизированно
O(n)
Обоснование
элементы хранятся в непрерывном массиве ссылок/байт,
адрес вычисляется по формуле, без перебора
в общем случае требуется последовательно сравнить x с
каждым элементом
используется хеш-таблица: позиция вычисляется по хешу
x, а не перебором
под список зарезервирован запас памяти; изредка
требуется перевыделение и копирование — O(n), но в
среднем на много операций это даёт O(1)
все существующие элементы нужно физически сдвинуть на
одну позицию вправо
O(k), где k — длина
интерпретатор обязан просмотреть каждый символ строки,
строки
чтобы разобрать число
O(d), где d —
для чисел «повседневного» размера практически O(1); для
количество цифр
очень больших чисел (тысячи цифр) операция заметно
дороже (см. раздел 5)
O(n), где n =
строки неизменяемы: создаётся новый объект и в него
len(s1)+len(s2)
копируются символы обеих строк
10. Реализация на Python
11.
12. Разбор задач с решением
Задача 1. Арифметика надвведёнными числами
Разбор задач
с решением
Условие: Считать с клавиатуры одну строку,
содержащую два вещественных числа через
пробел, и вывести их сумму, разность,
произведение и частное (частное округлить
до двух знаков после запятой).
Входные/выходные данные: Вход: "12 5" →
Выход:
Сумма:
17.0,
Разность:
Произведение: 60.0, Частное: 2.4
7.0,
13.
Задача 2. Преобразование строки в список чисел (базовый уровень)Условие: Дана строка "23.1,19.4,-5.0,0,31.2" с температурами, перечисленными через запятую.
Преобразовать её в список вещественных чисел и вывести максимум, минимум и среднее значение
(округлённое до двух знаков).
Входные/выходные данные: Вход задан константой в коде. Выход: список, максимум, минимум,
среднее
14.
Задача 3. Проверка пользовательского ввода при преобразовании(средний уровень) Условие: Считать с клавиатуры имя пользователя и год рождения (год — тоже строкой).
Вычислить примерный возраст как разницу между текущим годом и годом рождения. Если введённый год нельзя
преобразовать в число или получившийся возраст выглядит некорректно (меньше 0 или больше 120 лет), вывести
понятное сообщение об ошибке вместо аварийного завершения программы.
Входные/выходные данные: Вход: имя и год на отдельных строках, например "Анна" и "2004". Выход: сообщение с
возрастом или с описанием ошибки.
15.
Задача 4. Разбор строки-записи с приведением полей к разным типам(средний уровень)
Условие: Дана строка-запись "id:17;active:true;balance:245.5", где поля разделены точкой с запятой, а имя поля и
значение — двоеточием. Нужно разобрать строку в словарь, где значение каждого поля приведено к «правильному»
типу: id — к int, active — к bool, balance — к float.
Входные/выходные данные: Вход задан константой в коде. Выход: словарь с приведёнными типами и их имена.
16.
Задача 5. Классификация строк по возможному числовому типу(повышенный уровень)
Условие: Дан список строк ["42", "3.14", "abc", "-7", "", "0", "3,14", "007"]. Написать функцию classify_and_convert,
которая распределяет элементы по трём категориям: то, что можно преобразовать в int, то, что можно преобразовать
в float (но не в int), и то, что преобразовать нельзя вовсе.
Входные/выходные данные: Вход задан константой в коде. Выход: словарь из трёх списков — int, float, invalid.
17. Типичные ошибки и подводные камни
int() округляет, ане отбрасывает —
на самом деле
наоборот
Сравнение
несовместимых
типов
bool("False") — это
True
Погрешность
представления
float
is — это не ==
Изменяемый объект
в качестве параметра
по умолчанию
Пустой ввод и
пустые коллекции
Слишком большие целые числа
при преобразовании в строку
18. —Выводы по теме —
“—Выводы по теме —
Python — с динамической, но строгой типизацией: тип определяется значением и
может меняться, но несовместимые типы не смешиваются без явного указания.
Типы делятся на изменяемые и неизменяемые — это влияет на поведение кода
(в т. ч. на ошибки вроде изменяемого параметра по умолчанию).
Преобразование бывает неявным (в арифметике) и явным (через int(), float() и
др.); при работе с внешними данными обязательно нужно явно приводить типы и
обрабатывать ошибки через try/except. Важно учитывать
нюансы: int() усекает, bool() любой непустой строки — True,
сравнение float через == ненадёжно, is проверяет идентичность, а не равенство.
Понимание сложности операций (O(1) vs O(n)) помогает предсказывать
производительность. Корректное и безопасное приведение типов — основа
работы со структурами данных, алгоритмами и внешними источниками.
Программирование