Материал: Bilety_Programmirovanie

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Модуль itertools. Генерация комбинаций значений!

combinations(последовательность, кол-во элементов) – на каждой итерации возвращает кортеж, содержащий комбинацию из указанного кол-ва элементов, элементы будут разными

combinations_with_replacement (последовательность, кол-во элементов) – на каждой итерации возвращает кортеж, содержащий комбинацию из указанного кол-ва элементов, кортеж может содержать одинаковые элементы

permutations(последовательность, r=None) - перестановки длиной r из последовательность.

product(последовательность1[, …, последовательностьN] [, repeat = 1]) – на каждой итерации возвращает комбинацию из элементов одной или нескольких последовательностей

Примеры:

#комбинации из 2-х различных элементов последовательности [1, 2, 3, 4]

for x in itertools.combinations([1, 2, 3, 4], 2):

print(x, end = ' ')

(1, 2) (1, 3) (1, 4) (2, 3) (2, 4) (3, 4)

#число сочетаний без повторений из 4 по 2

s = list(itertools.combinations( range(1, 5), 2))

print(s)

print(len(s))

[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

6

accumulate (последовательность [, функция]) – на каждой итерации возвращает результат, полученный выполнением функции над текущим элементов и результатом, полученным на предыдущей операции

list(itertools.accumulate( [1, 2, 3, 4, 5] ))

[1, 3, 6, 10, 15]

list(itertools.accumulate( [1, 2, 3, 4, 5], lambda x, y: x*y))

[1, 2, 6, 24, 120]

chain (последовательность1 [, …, последовательность N]) – на каждой итерации возвращает элементы сначала из первой последовательности, затем из второй и т.д.

lslice ( последовательность[, начало], конец [, шаг])

starmap (функция, последовательность) – формирует последовательность на основе значений, возвращаемых функцией

  1. Оператор try ... Exept

В программах могут возникать Исключения

  • синтаксические

  • логические

  • ошибки во время выполнения

Исключения возбуждаются не только при ошибке, но и при наступлении каких-либо событий, например, при делении на ноль возникает исключение ZeroDivisionError или может возникнуть исключение ValueError, если функция index не найдет подстроку в строке

Обрабатывать исключения можно при помощи оператора try...except. Формат записи этого оператора

try:

<Блок, в котором перехватываются исключения>

[except [<Исключение 1> [as <Объект исключения>]]]:

<Блок, выполняемый при возникновении исключения>

[…]

[except [<Исключение N> [as <Объект исключения>]]]:

<Блок, выполняемый при возникновении исключения>

[else:

<Блок, выполняемый, если исключение не возникло>]

[finally:

<Блок, выполняемый в любом случае>]

Части, которые заключены в квадратные скобки могут отсутствовать.

Пример оператора try...Except.

Имеются два числа x и y. Вывести частное от деления x/y, если это можно, иначе вывести сообщение "Произошла ошибка"

x = 5

y =2

try:

z = x/y

print('x/y=', z )

except :

print("Произошла ошибка")

x/y= 2.5

x = 2

y = 0

try:

z = x/y

print('x/y=', z )

except :

print("Произошла ошибка")

Произошла ошибка

  1. Работа с текстовыми файлами: открытие файла, ввод, вывод данных

При работе с файлами необходимо : открыть файловый поток для чтения/записи/дозаписи, считать/записать данные,  закрыть файловый поток.  Открытие файлового потока  Открытие файлового потока производится с помощью функции open. Формат записи этой функции:  open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) - возвращает файловый поток  У этой функции много параметров, через знак равенства указаны значения параметров по умолчанию. Рассмотрим первые два из них.  file - строка с именем файла на диске. Если файл лежит в папке, отличной от папки с программой, то нужно указать полный путь к файлу  mode - строка, которая означает режим открытия файла (для чтения/ для записи). Значение по умолчанию этого параметра 'r' - открыть для чтения. Режимы открытия файла могут быть следующими  'r'  открытие на чтение (является значением по умолчанию)  'w'  открытие на запись, содержимое файла удаляется, если файла не существует, создается новый  'x' открытие на запись, если файла не существует, иначе исключение  'a' открытие на дозапись, информация добавляется в конец файла  'b' открытие в двоичном режиме  't'  открытие в текстовом режиме (является значением по умолчанию)  '

Последний аргумент, encoding, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку файла.  Следующая команда открывает файл file_name.txt из текущей папки для чтения, f - файловый поток, связанный с этим файлом.  f = open('file_name.txt')  Чтение из файла  Открыли мы файл, а теперь мы хотим прочитать из него информацию. Для этого есть несколько способов.  f.read([size]) – считывает некоторый объем данных размера [size] из файла  f.read() – считывает весь файл  f.readline() – считывает строку из файла  f.readlines() – считывает все содержимое файла и возвращает список строк.  После работы с файлом его надо закрыть с помощью метода close: f.close().  Рассмотрим примеры считывания данных из файла  In [8]:  f = open('file_name.txt')  s = f.read() #считали все содержимое файла в строку s  print(s) #вывели строку со всем содержимым файла  f.close() #закрытие файла  В файле содержится некоторая текстовая информация  Строка 1  Строка 2  И еще чуть-чуть текста  Конец текста  f = open('file_name.txt')  s = f.readline() #считали первую строку файла в строку s  print(s) #вывели первую строку файла  f.close() #закрытие файла  В файле содержится некоторая текстовая информация : 

f = open('file_name.txt')  s = f.readlines() #считали все содержимое файла в список s  print(s) #вывели список строк  f.close() #закрытие файла  ['В файле содержится некоторая текстовая информация\n', 'Строка 1\n', 'Строка 2\n', 'И еще чуть-чуть текста\n', 'Конец текста']  Получили список, элементы которого - строки файла. Символ '\n' - специальный символ, который означает переход на новую строку. 

Есть ещё один способ прочитать файл построчно, воспользовавшись циклом for.  In [11]:  f = open('file_name.txt')  for line in f:  print(line)  В файле содержится некоторая текстовая информация  Строка 1  Строка 2  И еще чуть-чуть текста  Конец текста

Запись в файл  Теперь рассмотрим запись в файл. Для записи данных в файл существует несколько методов  f.write(s) записывает в файл строку s  f.writelines( <последовательность строк>) – записывает в файл <последовательность строк>  Попробуем записать в файл список чисел от 1 до 100 с шагом 5.  Для этого откроем файловый поток для записи и свяжем его с файлом text.txt из текущей папки. Если файла не существует, то программа создаст его. Если такой файл в папке уже имеется, то его содержимое будет стерто, и он будет открыт для записи.  f = open('text.txt', 'w')  for i in range(1, 101, 5):  f.write(str(i) + ' ')  f.close()  Теперь попробуем вывести то, что мы записали в файл text.txt  In [13]:  g = open('text.txt') #открыли файл для чтения  print(g.read()) #вывели на экран все содержимое файла  g.close() #закрыли файловый поток  Дан текстовый файл input.txt. Найти в файле самую длинную строку. Если таких строк несколько, то вывести ту, которая встречается первой. f = open('input.txt') #открытие файлового потока  s = f.readlines() #считали все содержимое файла в список s  s.sort(key=lambda x:len(x), reverse=True)# отсортируем строки в порядке убывания длины строк  print(s[0]) #строка с максимальной длиной  f.close() #закрытие файлового потока 

Источник: https://studfile.net/preview/16688519/