learning:py
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
learning:py [01.06.2025 09:26] – [Файлы и исключения] viacheslav | learning:py [06.06.2025 09:18] (текущий) – [Поиск и методы обработки списков] viacheslav | ||
---|---|---|---|
Строка 1127: | Строка 1127: | ||
print(line.rstrip(' | print(line.rstrip(' | ||
file.close() | file.close() | ||
+ | |||
+ | # Удаление записи из файла. Структура файла: | ||
+ | # Вася Пупкин | ||
+ | # 4 | ||
+ | # Петя Мокин | ||
+ | # 3 | ||
+ | # Лена Петрова | ||
+ | # 5 | ||
+ | |||
+ | name = ' | ||
+ | |||
+ | file_src = open(r' | ||
+ | file_tmp = open(r' | ||
+ | import re | ||
+ | |||
+ | s = file_src.readline().rstrip(' | ||
+ | while s != '': | ||
+ | mark = file_src.readline().rstrip(' | ||
+ | if not re.search(name, | ||
+ | file_tmp.write(f' | ||
+ | file_tmp.write(f' | ||
+ | s = file_src.readline().rstrip(' | ||
+ | file_src.close() | ||
+ | file_tmp.close() | ||
+ | |||
+ | import os | ||
+ | os.remove(r' | ||
+ | os.rename(r' | ||
</ | </ | ||
Строка 1145: | Строка 1173: | ||
15/0 | 15/0 | ||
ZeroDivisionError: | ZeroDivisionError: | ||
+ | |||
+ | # Обработка нескольких исключений. Без указания имени исключения обрабатываются все остальные случаи. | ||
+ | except IOError: | ||
+ | print(' | ||
+ | except ValueError: | ||
+ | print(' | ||
+ | except: | ||
+ | print(' | ||
+ | | ||
+ | # Присвоение объекта исключения переменной err (можно задать любое другое название переменной) | ||
+ | except ValueError as err: | ||
+ | print(err) | ||
+ | # invalid literal for int() with base 10: ' | ||
+ | |||
+ | # Конструкция try/except может иметь необязательную группу else, она выполняется при отсутствии исключений | ||
+ | try: | ||
+ | result = 15 / 5 | ||
+ | except ZeroDivisionError: | ||
+ | print(' | ||
+ | else: | ||
+ | print(result) | ||
+ | | ||
+ | # Конструкция try/except может иметь необязательную группу finally, она выполняется независимо от того, были исключения или нет. | ||
+ | try: | ||
+ | result = 15 / 0 | ||
+ | except ZeroDivisionError: | ||
+ | print(' | ||
+ | finally: | ||
+ | print(' | ||
</ | </ | ||
+ | Необработанное исключение приводит к остановке выполнения программы. Исключение может быть необработанным, | ||
+ | ===== Списки и кортежи ===== | ||
+ | // | ||
+ | - // | ||
+ | - // | ||
+ | |||
+ | // | ||
+ | |||
+ | <code python> | ||
+ | # Списки | ||
+ | nums = [2, 4, 6, 8, 10] | ||
+ | names = [' | ||
+ | info = [' | ||
+ | |||
+ | # Функция list() преобразует некоторые типы объектов в списки | ||
+ | list(range(5)) # даст [0, 1, 2, 3, 4] | ||
+ | |||
+ | # * становится оператором повторения, | ||
+ | repeat = [1,2,3] * 3 | ||
+ | print(repeat) | ||
+ | [1, 2, 3, 1, 2, 3, 1, 2, 3] | ||
+ | |||
+ | # Обход списка в for | ||
+ | numbers = [2, 4, 6, 8, 10] | ||
+ | for num in numbers: | ||
+ | print(num) | ||
+ | | ||
+ | # Индексы | ||
+ | numbers[0] # 2 | ||
+ | numbers[1] # 4 | ||
+ | numbers[-1] # 10 | ||
+ | numbers[5] # Исключение IndexError | ||
+ | |||
+ | # Длина последовательности - len() | ||
+ | numbers = [2, 4, 6, 8, 10] | ||
+ | index = 0 | ||
+ | while index < len(numbers): | ||
+ | print(numbers[index]) | ||
+ | index += 1 | ||
+ | |||
+ | # Обход списка по индексу | ||
+ | numbers = [2, 4, 6, 8, 10] | ||
+ | for index in range(len(numbers)): | ||
+ | print(numbers[index]) | ||
+ | | ||
+ | # Изменение списка. Изменить можно только существующие индексы. | ||
+ | numbers = [2, 4, 6, 8, 10] | ||
+ | numbers[0] = 1 # [1, 4, 6, 8, 10] | ||
+ | numbers[5] = 12 # исключение IndexError | ||
+ | # Можно сначала создать список, | ||
+ | numbers = [0] * 6 | ||
+ | n = 11 | ||
+ | for i in range(len(numbers)): | ||
+ | numbers[i] = n | ||
+ | n += 1 | ||
+ | print(numbers) # [11, 12, 13, 14, 15, 16] | ||
+ | |||
+ | # Конкатенация (слияние) списков | ||
+ | list1 = [1,2,3] | ||
+ | list1 = [4,5,6] | ||
+ | list3 = list1 + list2 # [1, 2, 3, 4, 5, 6] | ||
+ | # Можно так: | ||
+ | list1 += list2 # list1 будет [1, 2, 3, 4, 5, 6] | ||
+ | |||
+ | # Нарезка списка - [< | ||
+ | numbers = [2, 4, 6, 8, 10] | ||
+ | print(numbers[1: | ||
+ | print(numbers[2: | ||
+ | # Если начальный индекс не указан, | ||
+ | print(numbers[: | ||
+ | # Если конечный индекс не указан, | ||
+ | print(numbers[3: | ||
+ | print(numbers[-3: | ||
+ | # Если не указаны оба индекса, | ||
+ | print(numbers[: | ||
+ | print(numbers) | ||
+ | # Указание шага: | ||
+ | print(numbers[:: | ||
+ | print(numbers[1:: | ||
+ | # Если в нарезке списка указать несуществующие индексы, | ||
+ | print(numbers[-888:: | ||
+ | print(numbers[1: | ||
+ | print(numbers[777: | ||
+ | </ | ||
+ | |||
+ | ==== Поиск и методы обработки списков ==== | ||
+ | <code python> | ||
+ | # Поиск выполняется при помощи инструкции in | ||
+ | if num in [122, | ||
+ | print(' | ||
+ | | ||
+ | # append(value) - добавить значение в конец списка | ||
+ | numbers = [2, 4, 6, 8, 10] | ||
+ | numbers.append(12) | ||
+ | print(numbers) # [2, 4, 6, 8, 10, 12] | ||
+ | |||
+ | # index(value) - индекс первого совпавшего значения. Если значение не найдено - исключение ValueError. | ||
+ | print(numbers.index(6)) # 2 | ||
+ | |||
+ | # insert(index, | ||
+ | numbers.insert(3, | ||
+ | print(numbers) # [2, 4, 6, 7, 8, 10] | ||
+ | |||
+ | # sort() - сортировка по значениям | ||
+ | numbers = [46, 2, 69, 28, 15] | ||
+ | numbers.sort() | ||
+ | print(numbers) # [2, 15, 28, 46, 69] | ||
+ | |||
+ | # remove(value) - удалить первое совпавшее значение. Если значение не найдено - исключение ValueError. | ||
+ | numbers = [46, 5, 69, 5, 15] | ||
+ | numbers.remove(5) | ||
+ | print(numbers) # [46, 69, 5, 15] | ||
+ | |||
+ | # Удалить конкретный индекс | ||
+ | numbers = [46, 5, 69, 5, 15] | ||
+ | del numbers[2] | ||
+ | print(numbers) # [46, 5, 5, 15] | ||
+ | |||
+ | # reverse() - инвертировать порядок значений | ||
+ | numbers = [46, 2, 69, 28, 15] | ||
+ | numbers.reverse() | ||
+ | print(numbers) # [15, 28, 69, 2, 46] | ||
+ | |||
+ | # min(), max() - минимальное и максимальное значение | ||
+ | numbers = [46, 5, 69, 5, 15] | ||
+ | print(min(numbers)) # 5 | ||
+ | print(max(numbers)) # 69 | ||
+ | </ | ||
+ | |||
+ | ==== Копирование списков ==== | ||
+ | <code python> | ||
+ | numbers = [2, 4, 6, 8, 10] | ||
+ | numbers2 = numbers # теперь обе переменные ссылаются на один и тот же объект в памяти | ||
+ | # Если изменить один объект, | ||
+ | numbers[0] = 222 | ||
+ | print(numbers2) # [222, 4, 6, 8, 10] | ||
+ | |||
+ | # Чтобы сделать копию, но отдельную: | ||
+ | numbers2 = [] | ||
+ | for i in numbers: | ||
+ | numbers2.append(i) | ||
+ | # Другой вариант: | ||
+ | numbers2 = [] + numbers | ||
+ | </ | ||
- | стр | + | стр |
====== Проблемы и их решение ====== | ====== Проблемы и их решение ====== | ||
learning/py.1748769968.txt.gz · Последнее изменение: — viacheslav