Словари
Типичная задача: ассоциативный массив, в котором «индексом» является не порядковый номер, а какой-то ярлык — обычно строка, или число (но любое, а не из диапазона), или кортеж чисел и т. п.
Картотека (при условии уникальности ярлыка)
- «Разреженные» массивы и матрицы
- Например, координаты объектов
- …
Задание словаря и доступ к элементу по ярлыку
Цикл по:
значениям словаря .values()
ключам словаря .keys() == цикл по самому словарю (так пошла эволюция)
по парам .items()
Вводить строки вида «товар стоимость», вывести, сколько было потрачено на каждый товар
Как превратить строку товар стоимость в строку и целое (сначала split(), затем преобразование типов)
- Как найти максимум (товар, за который заплачено больше всего)?
«Ручной вариант»
Вариант с преобразованием .items() в список кортежей (val, key) и max()
Как обработать строки вида «название товара в несколько слов стоимость» в name, cost?
Любой вариант (например, .split(), -1 элемент — это cost, а остальным элементам дделаем обратно .join(), и это name)
вариант с string.rindex(" ")
«В далёкой галактике». Вводить строчки вида «имя x,y,z» — название звезды и её координаты. Название состоит из одного слова. Вывести пару звёзд, который дальше всего друг от друга. Имена могут совпадать, а координаты — нет!
очевидно, ключам должны быть координаты. Вполне подойдёт кортеж чисел (x, y, z)
Как превратить имя x,y,z в name, coords, где coords — это кортеж чисел (x, y, z)
math.dist(точка1, точка2) решит главную математическую задачу
Как проверить все расстояния? Сравнить каждую координату с каждой — вложенный цикл
Можно написать длинную списковую сборку и вызвать на ней max(), но зачем
- (если успеем) Словари и именные/необязательные параметры функций
Д/З
Отщёлкать одиннадцатое занятие учебника и решить все задачи
Скопировать решения в соответствующие файлы и проверить, что они всё ещё работают!
Имена файлов — от prog_11_1.py до prog_11_13.py
Прислать эти 6 файлов в виде тринадцати приложений к одному письму по адресу <uneexlectures AT cs DOT msu DOT ru>
В поле Subject должно быть «слово» PhilosoPython2022 (другие слова тоже можно ☺)