Главная страница
Навигация по странице:

  • Данилина

  • Python_практикум. Методическое пособие для практических и лабораторных работ для студентов направлений подготовки


    Скачать 267 Kb.
    НазваниеМетодическое пособие для практических и лабораторных работ для студентов направлений подготовки
    Дата02.06.2022
    Размер267 Kb.
    Формат файлаdoc
    Имя файлаPython_практикум.doc
    ТипМетодическое пособие
    #565005
    страница7 из 7
    1   2   3   4   5   6   7

    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()
    Задания

    1. Напишите программу, которая записывает в текстовый файл 5 введенных пользователем слов по одному в строке.

    2. Напишите программу, которая считывает из текстового файла данные и печатает их в последовательных строках без пустых строк между ними (используйте s.strip()).

    3. Напишите программу, которая считывает из текстового файла данные в список и печатает их в виде списка без символов перевода строки.

    4. Напишите программу, которая записывает в текстовый файл 10 случайных целых чисел.

    5. Напишите программу, которая считывает из текстового файла числовые данные, печатает их и вычисляет их произведение.

    6. Напишите программу, которая считывает из текстового файла числовые данные и печатает максимальное и минимальное число.

    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' }

    Задания

    1. Напишите программу, которая создает и печатает словарь из 10 русских слов и их английских переводов. Русское слово будет ключом, а английское – значением.

    2. Добавьте к программе поиск английского слова по введенному русскому (значение по ключу – одна команда).

    3. Добавьте к программе поиск русского слова по введенному английскому (ключ по значению – цикл).

    4. Обеспечьте корректную работу программы в случае отсутствия введенного слова в словаре.

    5. Создайте из слов старого словаря новый, где ключом будет английское слово, а значением – русское. Используйте метод items.

    6. Создайте словарь и наполните его данными, которые бы отражали количество студентов в разных группах (ИТ-217, ИТ-218, ИБ-119 и т. п.). Внесите изменения в словарь согласно следующему:

      1. в одной из групп изменилось количество студентов (вводится пользователем),

      2. появилась новая группа,

      3. удалена группа.

    Вычислите общее количество студентов.

    1. Доработайте программу следующим образом:

      1. первоначально словарь формируется из файла, каждая строка которого выглядит как группа:число, например, ИТ-217:23 (для распаковки строк используйте split);

      2. пользователь выбирает нужное ему действие из трех перечисленных, либо завершение работы (пользователь может последовательно выполнить любое количество действий), после каждого действия словарь печатается;

      3. по завершении работы печатается количество студентов и словарь записывается в файл.



    Библиографический список


    1. Абдрахманов М.И. Python. Уроки. – devpractice.ru, 2017– 110с.

    2. metanit.com/python/tutorial/

    3. pythonworld.ru/

    4. foxford.ru/wiki/informatika/

    Учебное издание
    Данилина Ирина Исаковна

    Программирование на языке Python
    Практикум
    Методическое пособие

    для практических и лабораторных работ

    для студентов направлений подготовки

    09.03.02- Информационные системы и технологии

    10.03.01- Информационная безопасность,

    очной и заочной формы обучения

    Редактор ____________

    Подписано в печать _____. Формат 60х84 1/16.

    Усл. печ. л. __. Тираж __ экз. Заказ __.

    Издательство УрГУПС

    620034, Екатеринбург, ул. Колмогорова, 66



    1 Этот метод носит название метод средних прямоугольников.

    1 Метод Монте-Карло – общее название вычислительных методов, в которых для вычисления какой-либо величины используется датчик случайных чисел (по названию города Монте-Карло, где расположено множество игорных заведений).

    i


    1   2   3   4   5   6   7


    написать администратору сайта