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

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

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

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

Добавлен: 09.12.2023

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

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

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

СОДЕРЖАНИЕ

§ 62. Массивы

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

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

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

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

§ 67. Матрицы

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

§ 62. Массивы

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

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

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

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

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

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

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

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

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

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

Задачи

Задачи

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

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

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

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

Задачи

Задачи

Задачи

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

Задачи

Задачи

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

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

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

Срезы в Python

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

Срезы в Python – шаг

Задачи

Задачи

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

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

Задачи

Задачи

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

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

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

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

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

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

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

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

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

Задачи

Задачи

Задачи

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

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

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

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

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

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

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

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

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

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

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

Задачи

Задачи

Задачи

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

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

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

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

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

Задачи

Задачи

Задачи

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

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

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

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

Задачи

Задачи

Задачи

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

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

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

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

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

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

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

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

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

Задачи

Задачи

Задачи

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

Задачи

Задачи

Задачи

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

Задачи

Задачи

Задачи

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

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

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

Задачи

Задачи

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

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

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

Вывод матриц

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

Задачи

Задачи

Задачи

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

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

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

Задачи

Задачи

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

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

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

Ввод данных

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

Задачи

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

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

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

Задачи

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

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

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

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

Задачи

Задачи

Конец фильма

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

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



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




Начальное значение:

Вывод на экран:

print ( s )

s = "Привет!"

Длина строки:

n = len ( s )

print ( s[5] )

0

1

2

3

4

5

6

П

р

и

в

е

т

!

s[0]

s[1]

s[2]

s[3]

s[4]

s[5]

s[6]

Строка – это

последовательность

символов!

!

print ( s[-2] )

s[len(s)-2]

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




Ввод с клавиатуры:

s = input ( "Введите имя: " )

Изменение строки:

s[4] = "a"

Строка – это неизменяемый объект!

!

... но можно составить новую строку:

s1 = s + "a"

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




s = input( "Введите строку:" )

s1 = "" # строка-результат

for c in s:

if c == "а":

c = "б"

s1 = s1 + c

print ( s1 )

Задача: заменить в строке все буквы "а" на буквы "б".

перебрать все символы в строке

добавить символ к строке-результату

Задачи




«A»: Ввести с клавиатуры символьную строку и заменить в ней все буквы «а» на «б» и все буквы «б» на «а» (заглавные на заглавные, строчные на строчные).

Пример:_Введите_строку'>Пример:_Введите_строку:_ааббААББссСС_Результат:_ббааББААссСС__Задачи'>Пример:

Введите строку:

ааббААББссСС

Результат:

ббааББААссСС

Задачи




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

Пример:

Введите строку:

Вася пошел гулять


Найдено слов: 3

Задачи




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

Пример:

Введите строку:

Вася пошел гулять

Самое длинное слово: гулять, длина 6

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




Объединение (конкатенация) :

s1 = "Привет"

s2 = "Вася"

s = s1 + ", " + s2 + "!"

"Привет, Вася!"

Срезы:

s = "0123456789"

s1 = s[3:8] # "34567"

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

разрезы

0

1

2

3

4

5

6

7

8

9

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




Срезы:

s = "0123456789"

s1 = s[:8] # "01234567"

от начала строки

s = "0123456789"

s1 = s[3:] # "3456789"

до конца строки

s1 = s[::-1] # "9876543210"

реверс строки

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




Срезы с отрицательными индексами:

s = "0123456789"

s1 = s[:-2] # "01234567"

N-2

s = "0123456789"

s1 = s[-6:-2] # "4567"

N-2

N-6

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




Вставка:

s = "0123456789"

s1 = s[:3] + "ABC" + s[3:]

Удаление:

s = "0123456789"

s1 = s[:3] + s[9:] # "0129"

"012"

"9"

"012ABC3456789"

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




Верхний/нижний регистр:

s = "aAbBcC"

s1 = s.upper() # "AABBCC"

s2 = s.lower() # "aabbcc"

Проверка на цифры:

s = "abc"

print ( s.isdigit() ) # False

s1 = "123"

print ( s1.isdigit() ) # True

… и много других.

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




s = "Здесь был Вася."

n = s.find ( "с" ) # n = 3

if n >= 0:

print ( "Номер символа", n )

else:

print ( "Символ не найден." )

Находит первое слева вхождение подстроки!

!

s = "Здесь был Вася."

n = s.rfind ( "с" ) # n = 12

Поиск с конца строки:

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




Задача: Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы».

Пример:

Введите имя, отчество и фамилию:

Василий Алибабаевич Хрюндиков

Результат:

Хрюндиков В.А.

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

Алибабаевич Хрюндиков

Хрюндиков

Хрюндиков В.А.

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




print ( "Введите имя, отчество и фамилию:" )

s = input()

n = s.find ( " " )


name = s[:n] # вырезать имя

s = s[n+1:]

n = s.find ( " " )

name2 = s[:n] # вырезать отчество

s = s[n+1:] # осталась фамилия

s = s + " " + name[0] + "." + name2[0] + "."

print ( s )

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




print ( "Введите имя, отчество и фамилию:" )

s = input()

fio = s.split()

s = fio[2] + " " + fio[0][0] + "." + fio[1][0] + "."

print ( s )

Решение в стиле Python:

Василий Алибабаевич Хрюндиков

fio[2]

fio[1]

fio[0]

Задачи




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

Пример:

Введите фамилию, имя и отчество:

Иванов Петр Семёнович

П.С. Иванов

Задачи




«B»: Ввести адрес файла и «разобрать» его на части, разделенные знаком "/". Каждую часть вывести в отдельной строке.

Пример:

Введите адрес файла:

C:/Фото/2013/Поход/vasya.jpg

C:

Фото

2013

Поход

vasya.jpg

Задачи




«C»: Напишите программу, которая заменяет во всей строке одну последовательность символов на другую.

Пример:

Введите строку:

(X > 0) and (Y < X) and (Z > Y) and (Z <> 5)

Что меняем: and

Чем заменить: &

Результат

(X > 0) & (Y < X) & (Z > Y) & (Z <> 5)

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




Из строки в число:

s = "123"

N = int ( s ) # N = 123

s = "123.456"

X = float ( s ) # X = 123.456

Из числа в строку:

N = 123

s = str ( N ) # s = "123"

s = "{:5d}".format(N) # s = " 123"

X = 123.456

s = str ( X ) # s = "123.456"

s = "{:7.2f}".format(X) # s = " 123.46"

s = "{:10.2e}".format(X) # s = " 1.23e+02"

Задачи




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

Пример:_Введите_выражение:_12+3+45_Ответ:_60_«B»'>Пример:

Введите выражение:

12+3+45

Ответ: 60

«B»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются только знаки «+» или «–»). Выражение вводится как символьная строка, все числа целые.

Пример:

Введите выражение:

12-3+45

Ответ: 54

Задачи




«C»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «», «*» и «/»). Выражение вводится как символьная строка, все числа целые. Операция «/» выполняется как целочисленное деление.

Пример:

Введите выражение:

12*3+45

Ответ: 81

Задачи




«D»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «», «*» и «/») и круглых скобок. Выражение вводится как символьная строка, все числа целые. Операция «/» выполняется как целочисленное деление (div).

Пример:

Введите выражение:

2*(3+45)+4

Ответ: 100

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




Задача: построить процедуру, которая заменяет в строке