Файл: 62. Массивы 63. Алгоритмы обработки массивов.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.12.2023

Просмотров: 414

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

§ 62. Массивы

§ 63. Алгоритмы обработки массивов

§ 64. Сортировка

§ 65. Двоичный поиск

§ 66. Символьные строки

§ 67. Матрицы

§ 68. Работа с файлами

§ 62. Массивы

Что такое массив?

Что такое массив?

Массивы в Python: списки

Генераторы списков

Вывод массива на экран

Заполнение случайными числами

Перебор элементов

Подсчёт нужных элементов

Перебор элементов

Перебор элементов

Задачи

Задачи

§ 63. Алгоритмы обработки массивов

Поиск в массиве

Поиск в массиве

Поиск в массиве

Задачи

Задачи

Задачи

Максимальный элемент

Задачи

Задачи

Реверс массива

Реверс массива

Циклический сдвиг элементов

Срезы в Python

Срезы в Python – отрицательные индексы

Срезы в Python – шаг

Задачи

Задачи

Отбор нужных элементов

Отбор нужных элементов

Задачи

Задачи

Особенности работы со списками

Копирование списков

§ 64. Сортировка

Что такое сортировка?

Метод пузырька (сортировка обменами)

Метод пузырька

Метод пузырька

Метод пузырька

Метод пузырька

Задачи

Задачи

Задачи

Быстрая сортировка (QuickSort)

Быстрая сортировка

Быстрая сортировка

Быстрая сортировка

Быстрая сортировка

Быстрая сортировка

Быстрая сортировка

Быстрая сортировка

Быстрая сортировка

Сортировка в Python

Сортировка в Python – на месте

Задачи

Задачи

Задачи

§ 65. Двоичный поиск

Двоичный поиск

Двоичный поиск

Двоичный поиск

Двоичный поиск

Задачи

Задачи

Задачи

§ 66. Символьные строки

Символьные строки

Символьные строки

Символьные строки

Задачи

Задачи

Задачи

Операции со строками

Операции со строками

Операции со строками

Операции со строками

Стандартные функции

Поиск в строках

Пример обработки строк

Пример обработки строк

Пример обработки строк

Задачи

Задачи

Задачи

Преобразования «строка» – «число»

Задачи

Задачи

Задачи

Строки в процедурах и функциях

Задачи

Задачи

Задачи

Рекурсивный перебор

Рекурсивный перебор

Рекурсивный перебор

Задачи

Задачи

Сравнение строк

Создание матриц

Создание матриц

Вывод матриц

Простые алгоритмы

Задачи

Задачи

Задачи

Перебор элементов матрицы

Перестановка строк и столбцов

Выделение строк и столбцов

Задачи

Задачи

§ 68. Работа с файлами

Как работать с файлами?

Принцип сэндвича

Ввод данных

Вывод данных в файл

Задачи

Обработка массивов

Обработка массивов

Обработка массивов

Задачи

Обработка строк

Чтение данных из файла

Обработка строк

Обработка строк

Задачи

Задачи

Конец фильма

Источники иллюстраций


«С»: Пиксели рисунка закодированы числами (обозначающими цвет) в виде матрицы, содержащей N строк и M столбцов. Выполните поворот рисунка вправо на 90 градусов:

1

2

3

4

5

6

7

8

9

7

4

1

8

5

2

9

6

3

§ 68. Работа с файлами



Как работать с файлами?




файлы

текстовые

двоичные

«plain text»:
  • текст, разбитый на строки;
  • из специальных символов только символы перехода на новую строку
  • любые символы
  • рисунки, звуки, видео, …

Принцип сэндвича




открыть файл

работа с файлом

закрыть файл

хлеб

хлеб

начинка

Fin = open ( "input.txt" )

Fout = open ( "output.txt", "w" )

# здесь работаем с файлами

Fin.close()

Fout.close()

файловые переменные-указатели

"r" - чтение

"w" – запись

"a" – добавление

по умолчанию – на чтение (режим "r")

Ввод данных




Fin = open( "input.txt" )

s = Fin.readline() # "1 2"

Чтение строки:

Чтение строки и разбивка по пробелам:

s = Fin.readline().split() # ["1","2"]

Чтение целых чисел:

s = Fin.readline().split() # ["1","2"]

a, b = int(s[0]), int(s[1])

или так:

a, b = [int(x) for x in s]

или так:

a, b = map( int, s )

Вывод данных в файл




a = 1

b = 2

Fout = open( "output.txt", "w" )

Fout.write ( "{:d} + {:d} = {:d}\n".format(

a, b, a+b) )

Fout.close()

Все данные преобразовать в строку!

!



пока не конец файла

прочитать число из файла

добавить его к сумме

Задача. В файле записано в столбик неизвестное количество чисел. Найти их сумму.

Fin = open ( "input.txt" )

sum = 0

while True:

s = Fin.readline()

if not s: break

sum += int(s)

Fin.close()

если конец файла, вернёт пустую строку



Задача. В файле записано в столбик неизвестное количество чисел. Найти их сумму.

sum = 0

Fin = open ( "input.txt" )

lst = Fin.readlines()

for s in lst:

sum += int(s)

Fin.close()

прочитать все строки в список строк




Задача. В файле записано в столбик неизвестное количество чисел. Найти их сумму.

sum = 0

with open ( "input.txt" ) as Fin:

for s in Fin:

sum += int(s)

Не нужно закрывать файл!

!

или так:

sum = 0

for s in open ( "input.txt" ):

sum += int(s)

Задачи




«A»: Напишите программу, которая находит среднее арифметическое всех чисел, записанных в файле в столбик, и выводит результат в другой файл.

«B»: Напишите программу, которая находит минимальное и максимальное среди чётных положительных чисел, записанных в файле, и выводит результат в другой файл. Учтите, что таких чисел может вообще не быть.

«C»: В файле в столбик записаны целые числа, сколько их – неизвестно. Напишите программу, которая определяет длину самой длинной цепочки идущих подряд одинаковых чисел и выводит результат в другой файл.

Обработка массивов




Задача. В файле записаны в столбик целые числа. Вывести в другой текстовый файл те же числа, отсортированные в порядке возрастания.

В чем отличие от предыдущей задачи?

?

Для сортировки нужно удерживать все элементы в памяти одновременно.

!

Обработка массивов




Ввод массива:

A = []

while True:

s = Fin.readline()

if not s: break

A.append ( int(s) )

Ввод в стиле Python:

s = Fin.read().split()

A = list ( map(int, s) )

Сортировка:

A.sort()

Обработка массивов




Вывод результата:

Fout = open ( "output.txt", "w" )

Fout.write ( str(A) )

Fout.close()

или так:

for x in A:

Fout.write ( str(x)+"\n" )

[1, 2, 3]

1

2

3

или так:

for x in A:

Fout.write ( "{:4d}".format(x) )

1 2 3

Задачи




«A»: В файле в столбик записаны числа. Отсортировать их по возрастанию последней цифры и записать в другой файл.

«B»: В файле в столбик записаны числа. Отсортировать их по возрастанию суммы цифр и записать в другой файл. Используйте функцию, которая вычисляет сумму цифр числа.

«C»: В двух файлах записаны отсортированные по возрастанию массивы неизвестной длины. Объединить их и записать результат в третий файл. Полученный массив также должен быть отсортирован по возрастанию.

Обработка строк




Задача. В файле записано данные о собаках: в каждой строчке кличка собаки, ее возраст и порода:



Мухтар 4 немецкая овчарка

Вывести в другой файл сведения о собаках, которым меньше 5 лет.

пока не конец файла Fin

прочитать строку из файла Fin

разобрать строку – выделить возраст

если возраст < 5 то

записать строку в файл Fout

Чтение данных из файла




Чтение одной строки:

s = Fin.readline()

Разбивка по пробелам:

data = s.split()

Выделение возраста:

sAge = data[1]

age = int ( sAge )

Кратко всё вместе:

s = Fin.readline()

age = int ( s.split()[1] )

Обработка строк




Fin = open ( "input.txt" )

Fout = open ( "output.txt", "w" )

while True:

s = Fin.readline()

if not s: break

age = int ( s.split()[1] )

if age < 5:

Fout.write ( s )

Fin.close()

Fout.close()

Полная программа:

Обработка строк




lst = Fin.readlines()

for s in lst:

age = int ( s.split()[1] )

if age < 5:

Fout.write ( s )

или так:

for s in open ( "input.txt" ):

age = int ( s.split()[1] )

if age < 5:

Fout.write ( s )

или так:

Задачи




«A»: В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и количество баллов, разделенные пробелами:

<Фамилия> <Имя> <Количество баллов>

Вывести в другой файл фамилии и имена тех учеников, которые получили больше 80 баллов.

«B»: В предыдущей задаче добавить к полученному списку нумерацию, сократить имя до одной буквы и поставить перед фамилией:

П. Иванов

И. Петров

...

Задачи




«C»: В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и количество баллов, разделенные пробелами:

<Фамилия> <Имя> <Количество баллов>

Вывести в другой файл данные учеников, которые получили больше 80 баллов. Список должен быть отсортирован по убыванию балла. Формат выходных данных:

П. Иванов 98

И. Петров 96

...

Конец фильма




ПОЛЯКОВ Константин Юрьевич

д.т.н., учитель информатики

ГБОУ СОШ № 163, г. Санкт-Петербург


kpolyakov@mail.ru

ЕРЕМИН Евгений Александрович

к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь

eremin@pspu.ac.ru

Источники иллюстраций



  • www.mcdonalds.com
  • иллюстрации художников издательства «Бином»
  • авторские материалы