477.94K
Категория: ПрограммированиеПрограммирование

11-12 занятие

1.

Массивы
Набор информации(элементов) хранящийся в смежных ячейках оперативной памяти.
В случае с Python – информация может быть как однотипной, так и разнотипной.
У большинства массивов(в некоторых языках программирования – у всех), есть индексная система.
Индексы – порядковые номера элементов внутри массива.
Существует положительная и отрицательная индексная система:
Положительная всегда начинает свой отсчет от 0(нуля) и все последующие индексы элементов будут
возрастать на 1. При этом перебор идет слева-направо.
Пример:
(123,”Привет”, True, 777)
0
1
2
3
Индексы
Отрицательная всегда начинает свой отсчет от -1 и все последующие индексы элементов будут
уменьшаться на 1. При этом -1 элемент всегда будет последним в массиве и перебор будет идти справаналево.
Пример:
(123,”Привет”, True, 777)
-4
-3
-2 -1
Индексы всегда указываются следующим образом:
Название переменной массива[индекс]
xx[2] # В коде существует массив хранящийся в переменной «xx».

2.

Строки
Самый простой вид массива состоящий исключительно из символов(chr).
Строка(или же текст) состоит из символов, символы – тоже типовая единица информации.
Строки поддерживают возможность работы по индексам.
Из всех массивов – обрабатывается процессором и считывается из оперативной памяти быстрее
всего. Объем места занимаемый в оперативной памяти – не велик, за исключением кортежей
состоящих исключительно из чисел.
Строки – не изменяемы:
В отличие от других массивов – в строках нельзя удалять или изменять отдельно взятые элементы.
В строки также нельзя добавить новые элементы, не пересоздавая всю конструкцию.
Строки поддерживают конкатенацию(склеивание строк) и численное копирование(умножение).
Строки поддерживают сравнения формата «равен»(==) или «не равен»(!=).
len()
Специальная функция подсчитывающая количество элементов в массивах(любых), но всегда считает
от 1.
Пример:
print(len(“Привет”)) # Выведет число «6»

3.

Кортежи
Может представлять собой набор элементов(информации) не одного типа, например в кортеже
можно встретить строки, символы, числа, другие кортежи или массивы.
Поддерживает работы по индексной системе.
Из всех массивов используемых в Python – на втором месте по скорости обработки и считыванию.
Может быть создан несколькими способами:
• Использование функции tuple (Пример: tuple(“Hello”))
• Перегрузка переменной (Пример: x = 1,2)
• Прямое создание (Пример: x = (1,2))
Кортежи, как и строки – не изменяемы:
В отличие от других массивов – в кортежах нельзя удалять или изменять отдельно взятые
элементы.
В кортежи также нельзя добавить новые элементы, не пересоздавая всю конструкцию.
Кортежи поддерживают конкатенацию(склеивание кортежей) и численное
копирование(умножение).
Кортежи поддерживают сравнения формата «равен»(==), «не равен»(!=), а также сравнения
«больше»(>,>=) и «меньше»(<,<=).
Существует способ генерации кортежей(и иных массивов), при помощи библиотеки random.
Пример генерации кортежа из 100 случайных чисел:
import random
rand_tupl = tuple(random.randint(0,10) for i in range(100))

4.

Срез – способ вывести из массива более чем 1 единицу информации за раз.
Срез работает аналогично циклу for i in range(), где мы указываем от чего начинаем счет, где его
заканчиваем и какой шаг будет при пересчете.
Срезы
Варианты записи срезов:
text = “Привет”
print(text[::]) # Будет выведено все слово.
print(text[3::]) # Будет выведено только «вет» - вывод начинается от 3 индекса.
print(text[:3:]) # Будет выведено только «При» - вывод будет идти до 3 индекса.
print(text[::2]) # Будет выведен каждый второй индекс от «0». Т.е. 0,2,4 или «Пие».
print(text[5:-1:-1]) # Выведет «тевирП».

5.

Цикл for
При работе с массивами цикл for может применяться для:
1. Пересчета по индексам.
Такой for перебирает все индексы от начала и до конца массива или может перебирать их иначе,
если указать в его параметрах «от», «до», «шаг» не стандартные значения. Универсальный вариант.
Пример:
text = “Привет”
for i in range(6):
print(i,”- это индекс буквы”, text[i]) # Вывод: «0 – это индекс буквы П» и т.д. по всем индексам.
2. Прямой перебор элементов.
Используется в задачах когда нам не нужны индексы, а необходимо сразу смотреть на само
значение.
Пример:
text = “Привет”
for i in text:
print(i) # Будет выводить только буквы по очереди, без учета индекса.
Цикл While также находит применение в работе с массивами, т.к. является универсальным. Но при
этом является не самым удобным инструментом для этого.

6.

Задачи на строки
Задача 1
Пользователь может ввести любое слово или даже полноценный текст.
Подсчитайте количество символов в введенном сообщении.
Выведите результат.
Задача 2
Выведите в конце введенное пользователем слово – наоборот.
Пример: «Привет» - «Тевирп»
Задача 3
Добавьте пользователю возможность ввести любую букву.
Помимо подсчета общего количества символов, подсчитайте и количество
использований указанной буквы.
Выведите результат.
Задача 4
Добавьте в конце вывод, в котором будут введенное слово или предложение
будет отображено без гласных.
Пример: «Привет» - «Првт»

7.

Задачи на кортежи
Задача 5
Сгенерируйте кортеж из 10 случайных чисел.
(диапазон определить самостоятельно, но должны быть отрицательные значения.)
Сложите каждое число в кортеже.
Сложите отдельно только положительные числа.
Выведите результаты.
Задача 6
Модифицируйте прошлый генератор.
Сейчас вместо 10 случайных чисел, ваш генератор будет создавать случайное количество чисел в
кортеже. Выведите количество чисел в кортеже.
Задача 7
Дайте возможность пользователю ввести число.
Найдите в сгенерированном ранее кортеже индекс первого совпадающего числа и выведите его.
Задача 8
Найдите в созданном кортеже минимальное и максимальное значение, а также среднее
арифметическое этого кортежа.

8.

Усложненные задачи(общие)
Задача 9
Модифицируйте задачу 4.
Сделайте дополнительный вывод, в котором все согласные будут заменены на «*».
Задача 10
Дайте пользователю возможность ввода адреса электронной почты.
Проверьте наличие в адресе символа «@», а также доменного окончания(«.ru», «.com» и т.д.)
Отдельно выведите полное доменное имя введенное пользователем( «gmail.com», «rambler.ru» и пр.)
Задача 11
Сгенерируйте кортеж из 10 чисел.
Последовательно начните отнимать все числа с конца кортежа от чисел с начала.
Выводите этот процесс.
Задача 12
Сгенерируйте два отдельных кортежа(кол-во элементов каждого определяется случайно) и выведите их.
Объедините их в один кортеж.
Отдельно выпишите уникальные числа кортежей.
Произведите сравнение кортежей. Выясните который из них больше и опишите как работает система
сравнения в комментариях.

9.

Усложненная задача(не общая)
Задача 12
Сгенерируйте два одинаковых по количеству элементов кортежа.
Не переводя их в списки – отнимите от каждого элемента первого кортежа, каждый
элемент второго с конца.
Выведите результат в едином кортеже.
English     Русский Правила