Python_практикум. Методическое пособие для практических и лабораторных работ для студентов направлений подготовки
Скачать 267 Kb.
|
8. Работа с файламиФайлы нужны, чтобы хранить в них информацию. Ваша программа может открывать файлы, записывать в них информацию и считывать ее оттуда. Открытие файлаf = open('имя файла', 'r') Первый параметр – полное имя, включая путь к файлу, второй – режим: r – для чтения (по умолчанию), w – для записи. При открытии файла для записи, если файл существовал, от очищается, если нет – создается. Чтение из файлаОткрыли файл, теперь мы хотим прочитать из него информацию. Метод read читает весь файл целиком, если был вызван без аргументов, и n символов, если был вызван с аргументом (целым числом n). a = f.read(1) в переменной a находится первый символ из файла b = f.read() в переменной b находится остальной текст из файла Метод readline читает одну строку из файла до символа «\n» – перевод строки. line = f.readline().strip() strip отрезает символ перевода строки. Можно прочитать файл построчно, воспользовавшись циклом for: f = open('text.txt') for line in f: действия с line Файл открывается, каждая строка читается в переменную line и каким-то образом обрабатывается. Числа в файле хранятся в виде текста, поэтому для работы с ними нужно выполнять преобразование с помощью функции int или float. Запись в файлf.write(текст или текстовая переменная) Если надо записать много строк, то используем цикл. Если надо записать числа – преобразуем их в строки с помощью функции str. Закрытие файлаПо окончании работы с файлом его необходимо закрыть: f.close() Пример 1. Текст считывается из файла целиком и печатается f = open('текст.txt','r') s = f.read() print(s) Пример 2. Целое число считывается из файла, преобразуется в целое число с помощью функции int и помещается в переменную t. Затем печатается значение t+5, чтобы показать, что с переменной t можно работать как с числом f = open('число.txt','r') t = int(f.read()) print(t+5) Пример 3. Из текстового файла считываются и печатаются строки f = open('строки.txt','r') for line in f: print(line) Пример 4. Из текстового файла строки считываются в список list_1 = [] f = open('строки.txt','r') for line in f: list_1.append(line.strip()) print(list_1) Проверьте, как будет выглядеть результат, если отбросить strip() Пример 5. Из текстового файла считываются числа (по одному в строке) и вычисляется их сумма f = open('числа.txt','r') sum = 0 for line in f: sum += int(line.strip()) print(sum) Поиск максимального числа в последовательности происходит схожим образом с вычислением суммы, но переменная, в которой хранится временный результат – это максимум среди уже просмотренных значений. Значение максимума в самом начале до цикла назначим равным первому элементу последовательности, а затем будем заменять новым, превосходящим его. Программа может выглядеть примерно так: Пример 6. f = open('data.txt','r') maximum = int(f.readline().strip()) for line in f: if int(line.strip())>maximum: maximum = int(line.strip()) print(maximum) Пример 7. В файл записывается одна строка текста f = open('текст1.txt','w') f.write('это текст для записи') f.close() Пример 8. В файл записывается несколько строк текста, \n - перевод строки f = open('текст2.txt','w') f.write('это' +'\n'+ 'текст' +'\n' + 'для'+'\n'+ 'записи') f.close() Пример 9. В файл записываются случайные числа, преобразованные в строки с помощью функции str. Без преобразования числа в файл записать нельзя. import random f = open('числа1.txt','w') for i in range(1,10): f.write(str(random.randint(1,100))+'\n') f.close() Задания Напишите программу, которая записывает в текстовый файл 5 введенных пользователем слов по одному в строке. Напишите программу, которая считывает из текстового файла данные и печатает их в последовательных строках без пустых строк между ними (используйте s.strip()). Напишите программу, которая считывает из текстового файла данные в список и печатает их в виде списка без символов перевода строки. Напишите программу, которая записывает в текстовый файл 10 случайных целых чисел. Напишите программу, которая считывает из текстового файла числовые данные, печатает их и вычисляет их произведение. Напишите программу, которая считывает из текстового файла числовые данные и печатает максимальное и минимальное число. 9. Словари ( тип данных dict)Словарь (dict) представляет собой структуру данных (которая иначе называется ассоциативный массив), предназначенную для хранения произвольных объектов с доступом по ключу. Данные в словаре хранятся в формате ключ – значение. Если вспомнить такую структуру как список, то доступ к его элементам осуществляется по индексу, который представляет собой целое положительное число, причем мы сами, непосредственно, не участвуем в индекса. В словаре аналогом индекса является ключ, при этом ответственность за его формирование ложится на программиста. Создание словаряПустой словарь можно создать, используя функцию dict(), либо просто указав пустые фигурные скобки. d1 = dict () d2 = {} Если необходимо создать словарь с заранее подготовленным набором данных, то можно использовать один из перечисленных выше подходов, но с перечислением групп ключ-значение. d1 = dict ( Ivan = "manager" , Mark = "worker" ) print (d1) получим { 'Mark' : 'worker' , 'Ivan' : 'manager' } d2 = { "A1" : "123" , "A2" : "456" } print (d2) получим { 'A2' : '456' , 'A1' : '123' } Добавление и удаление элементаЧтобы добавить элемент в словарь нужно указать новый ключ и значение. d1 = { "Russia" : "Moscow" , "USA" : "Washington" } d1[ "China" ] = "Beijing" print (d1) полуим { 'Russia' : 'Moscow' , 'China' : 'Beijing' , 'USA' : 'Washington' } Для удаления элемента из словаря можно воспользоваться командой del. d2 = { "A1" : "123" , "A2" : "456" } del d2[ "A1" ] print (d2) получим { 'A2' : '456' } Работа со словаремПроверка наличия ключа в словаре производится с помощью оператора in. d2 = { "A1" : "123" , "A2" : "456" } print("A1" in d2) print("A3" in d2) получим True False Доступ к элементу словаря, осуществляется как же как доступ к элементу списка, только в качестве индекса указывается ключ. d1 = { "Russia" : "Moscow" , "USA" : "Washington" } print(d1[ "Russia" ]) получим 'Moscow' Цикл просмотра элементов словаря выглядит так: for element in d1: print(element) напечатаются только ключи. Количество элементов словаря (пар ключ : значение) определяется с помощью функции len. Основные методы словарейМетод clear() удаляет все элементы словаря. d2 = { "A1" : "123" , "A2" : "456" } d2.clear() print (d2) получим {} Метод copy() создает новую копию словаря. d2 = { "A1" : "123" , "A2" : "456" } d3 = d2.copy() print (d3) получим { 'A1' : '123' , 'A2' : '456' } d3[ "A1" ] = "789" print (d2) получим { 'A2' : '456' , 'A1' : '123' } print (d3) получим { 'A1' : '789' , 'A2' : '456' } Метод fromkeys(seq[, value]) создает новый словарь с ключами из seq и значениями из value . По умолчанию value присваивается значение None . Метод items() возвращает элементы словаря (ключ, значение) в отформатированном виде. d = { "A1" : "123" , "A2" : "456" } print(d.items()) получим dict_items([( 'A2' , '456' ) , ( 'A1' , '123' )]) С помощью этого метода можно в цикле for распаковывать словари, сразу извлекая как ключ, так и соответствующее ему значение: for key, value in nums.items(): print(key, value) напечатаются ключи и значения. Следующий пример показывает, как можно преобразовать словарь в обратный, поменяв местами ключи и значения. d_old = { "A1" : "123" , "A2" : "456" } d_new = {} for key, value in d_old.items(): d_new[value]=key Метод keys() возвращает ключи словаря. d = { "A1" : "123" , "A2" : "456" } d.keys() dict_keys([ 'A2' , 'A1' ]) Метод pop(key[, default]) Если ключ key есть в словаре, то данный элемент удаляется из словаря и возвращается значение по этому ключу, иначе будет возвращено значение default. Если default не указан и запрашиваемый ключ отсутствует в словаре, то будет вызвано исключение KeyError. d = { "A1" : "123" , "A2" : "456" } print(d.pop( "A1" )) получим '123' print (d) получим { 'A2' : '456' } Метод popitem() удаляет и возвращает пару (ключ, значение) из словаря. Если словарь пуст, то будет вызвано исключение KeyError . d = { "A1" : "123" , "A2" : "456" } print(d.popitem()) получим ( 'A2' , '456' ) print (d) получим { 'A1' : '123' } Задания Напишите программу, которая создает и печатает словарь из 10 русских слов и их английских переводов. Русское слово будет ключом, а английское – значением. Добавьте к программе поиск английского слова по введенному русскому (значение по ключу – одна команда). Добавьте к программе поиск русского слова по введенному английскому (ключ по значению – цикл). Обеспечьте корректную работу программы в случае отсутствия введенного слова в словаре. Создайте из слов старого словаря новый, где ключом будет английское слово, а значением – русское. Используйте метод items. Создайте словарь и наполните его данными, которые бы отражали количество студентов в разных группах (ИТ-217, ИТ-218, ИБ-119 и т. п.). Внесите изменения в словарь согласно следующему: в одной из групп изменилось количество студентов (вводится пользователем), появилась новая группа, удалена группа. Вычислите общее количество студентов. Доработайте программу следующим образом: первоначально словарь формируется из файла, каждая строка которого выглядит как группа:число, например, ИТ-217:23 (для распаковки строк используйте split); пользователь выбирает нужное ему действие из трех перечисленных, либо завершение работы (пользователь может последовательно выполнить любое количество действий), после каждого действия словарь печатается; по завершении работы печатается количество студентов и словарь записывается в файл. Библиографический списокАбдрахманов М.И. Python. Уроки. – devpractice.ru, 2017– 110с. metanit.com/python/tutorial/ pythonworld.ru/ foxford.ru/wiki/informatika/ Учебное издание Данилина Ирина Исаковна Программирование на языке Python Практикум Методическое пособие для практических и лабораторных работ для студентов направлений подготовки 09.03.02- Информационные системы и технологии 10.03.01- Информационная безопасность, очной и заочной формы обучения Редактор ____________ Подписано в печать _____. Формат 60х84 1/16. Усл. печ. л. __. Тираж __ экз. Заказ __. Издательство УрГУПС 620034, Екатеринбург, ул. Колмогорова, 66 1 Этот метод носит название метод средних прямоугольников. 1 Метод Монте-Карло – общее название вычислительных методов, в которых для вычисления какой-либо величины используется датчик случайных чисел (по названию города Монте-Карло, где расположено множество игорных заведений). i |