{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Занятие 14" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Сохранение данных в файл. Обработка исключений" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Модуль ***time***." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 10" ] } ], "source": [ "import time\n", "\n", "for i in range(10):\n", " print('\\r', i + 1, end='')\n", " time.sleep(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Вызов подскази модулей." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "help(time)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Задача 1**\n", "\n", "Напишите программу, которая будет выводить загрузочную строку в виде “#”. Таких символов в строке может быть 10. Пример вывода показан на слайде." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import time\n", "\n", "for i in range(10):\n", " print('\\r[', '#' * (i + 1),'.' * (10 - (i + 1)) , ']', end='')\n", " time.sleep(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Пример первой программы с ошибкой. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import time\n", "\n", "for i in range(10):\n", " print('\\r', i + 1, end='')\n", " taime.sleep(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Обработка ошибки" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import time\n", "\n", "for i in range(10):\n", " print('\\r', i + 1, end='')\n", " try:\n", " taime.sleep(1)\n", " except NameError: \n", " print(f'Кажется вы ошиблись при написании кода:)')\n", " time.sleep(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Задача 2**\n", "\n", "Напишите функцию, которая будет складывать значения с одинаковыми индексами из двух списков одинаковой длины. Списки заранее прописаны в дневнике." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "first_list = [1, 2, 3, '123']\n", "second_list = [1, 1, 1, 234]\n", "third_list = [1, 1, 1, 1]\n", "\n", "for i in range(len(first_list)):\n", " try:\n", " third_list[i] = first_list[i] + second_list[i]\n", " except TypeError:\n", " third_list[i] = str(first_list[i]) + str(second_list[i])\n", " \n", "print(third_list)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Чтение и запись данных" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Запись и создание" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "f = open('text.txt', 'w')\n", "for index in range(10):\n", " f.write(str(index) + '\\n')\n", "f.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Чтение" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001f\u0002\u0003\u0004\u0005\u0006\u0007\n" ] } ], "source": [ "f = open('text.txt', 'r')\n", "a = f.read()\n", "f.close()\n", "\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Задача 3**\n", "\n", "Сгенерируйте список из 10 четных чисел и сохраните его в файл. После записи прочитайте список и выведите его на экран. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Преобразование из десятичной системы счисления в двоичную: " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Список 16 чисел от 0 до 15: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]\n", "\n", "В десятичной системе счисления: 0;\n", "Это же число в двоичной системе: 0b0\n", "\n", "В десятичной системе счисления: 1;\n", "Это же число в двоичной системе: 0b1\n", "\n", "В десятичной системе счисления: 2;\n", "Это же число в двоичной системе: 0b10\n", "\n", "В десятичной системе счисления: 3;\n", "Это же число в двоичной системе: 0b11\n", "\n", "В десятичной системе счисления: 4;\n", "Это же число в двоичной системе: 0b100\n", "\n", "В десятичной системе счисления: 5;\n", "Это же число в двоичной системе: 0b101\n", "\n", "В десятичной системе счисления: 6;\n", "Это же число в двоичной системе: 0b110\n", "\n", "В десятичной системе счисления: 7;\n", "Это же число в двоичной системе: 0b111\n", "\n", "В десятичной системе счисления: 8;\n", "Это же число в двоичной системе: 0b1000\n", "\n", "В десятичной системе счисления: 9;\n", "Это же число в двоичной системе: 0b1001\n", "\n", "В десятичной системе счисления: 10;\n", "Это же число в двоичной системе: 0b1010\n", "\n", "В десятичной системе счисления: 11;\n", "Это же число в двоичной системе: 0b1011\n", "\n", "В десятичной системе счисления: 12;\n", "Это же число в двоичной системе: 0b1100\n", "\n", "В десятичной системе счисления: 13;\n", "Это же число в двоичной системе: 0b1101\n", "\n", "В десятичной системе счисления: 14;\n", "Это же число в двоичной системе: 0b1110\n", "\n", "В десятичной системе счисления: 15;\n", "Это же число в двоичной системе: 0b1111\n", "\n" ] } ], "source": [ "numbers = [i for i in range(16)]\n", "\n", "print(f'Список 16 чисел от 0 до 15: {numbers}\\n')\n", "for number in numbers:\n", " b_n = bin(number)\n", " print(f'В десятичной системе счисления: {number};\\nЭто же число в двоичной системе: {b_n}\\n')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***bytes()*** и ***bytearray()***" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b'\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f'\n", "bytearray(b'\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f')\n", "\n", "\n", "000102030405060708090a0b0c0d0e0f\n", "000102030405060708090a0b0c0d0e0f\n", "\n", "\n", "0b10000001000000011000001000000010100000110000001110000100000001001000010100000101100001100000011010000111000001111\n", "0b10000001000000011000001000000010100000110000001110000100000001001000010100000101100001100000011010000111000001111\n" ] } ], "source": [ "print(bytes(numbers))\n", "print(bytearray(numbers))\n", "print('\\n')\n", "print(bytes(numbers).hex())\n", "print(bytearray(numbers).hex())\n", "print('\\n')\n", "print(bin(int(bytes(numbers).hex(), base=16)))\n", "print(bin(int(bytearray(numbers).hex(), base=16)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Сохраним список файл и прочитаем его" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]\n" ] } ], "source": [ "f = open('text.txt', 'wb')\n", "a = f.write(bytes(numbers))\n", "f.close()\n", "\n", "f = open('text.txt', 'rb')\n", "b = f.read()\n", "f.close()\n", "print(list(b))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Преобразование строки в набор байтов" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b'hello'\n", "68656c6c6f\n", "hello\n" ] } ], "source": [ "ex_str = 'hello'\n", "b_str = ex_str.encode('utf-8')\n", "\n", "print(b_str)\n", "print(b_str.hex())\n", "print(b_str.decode())" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Буква: a\n", "\tВ шестнадцатеричном виде: 61\n", " \tВ десятичном виде: 97\n", " \tВ двоичном виде: 1100001\n", "\n", "Буква: b\n", "\tВ шестнадцатеричном виде: 62\n", " \tВ десятичном виде: 98\n", " \tВ двоичном виде: 1100010\n", "\n", "Буква: c\n", "\tВ шестнадцатеричном виде: 63\n", " \tВ десятичном виде: 99\n", " \tВ двоичном виде: 1100011\n", "\n", "Буква: d\n", "\tВ шестнадцатеричном виде: 64\n", " \tВ десятичном виде: 100\n", " \tВ двоичном виде: 1100100\n", "\n", "Буква: а\n", "\tВ шестнадцатеричном виде: d0b0\n", " \tВ десятичном виде: 53424\n", " \tВ двоичном виде: 1101000010110000\n", "\n", "Буква: б\n", "\tВ шестнадцатеричном виде: d0b1\n", " \tВ десятичном виде: 53425\n", " \tВ двоичном виде: 1101000010110001\n", "\n", "Буква: в\n", "\tВ шестнадцатеричном виде: d0b2\n", " \tВ десятичном виде: 53426\n", " \tВ двоичном виде: 1101000010110010\n", "\n", "Буква: г\n", "\tВ шестнадцатеричном виде: d0b3\n", " \tВ десятичном виде: 53427\n", " \tВ двоичном виде: 1101000010110011\n", "\n" ] } ], "source": [ "letter = ['a', 'b', 'c', 'd', 'а', 'б', 'в', 'г']\n", "for l in letter: \n", " bb_s = l.encode('utf-8')\n", " print(f'''Буква: {l}\\n\\tВ шестнадцатеричном виде: {bb_s.hex()}\n", " \\tВ десятичном виде: {int(bb_s.hex(), base=16)}\n", " \\tВ двоичном виде: {bin(int(bb_s.hex(), base=16)).lstrip('0b')}\\n''')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Модуль *pickle*" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'Верхний ящик': ['Ручка', 'Тетрадь'], 'Нижний ящик': 'Кошка'}\n", "\n" ] } ], "source": [ "import pickle\n", "ex_data = {'Верхний ящик':['Ручка', 'Тетрадь'], 'Нижний ящик': 'Кошка'}\n", "f = open('text.txt', 'wb')\n", "pickle.dump(ex_data, f)\n", "f.close()\n", "\n", "f = open('text.txt', 'rb')\n", "el_data = pickle.load(f)\n", "f.close()\n", "print(el_data)\n", "\n", "print(type(el_data))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Задача 4 \n", "\n", "Прочитайте данные из файла с именем ‘Task_4.liga’. Выведите прочтенные данные. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ты прочитал файл!\n" ] } ], "source": [ "f = open('Task_4.liga', 'r')\n", "el_d = f.read()\n", "f.close()\n", "print(el_d)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Задача 5" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'Молодец': 'Да', 'Кто': 'Ты:)'}\n", "\n" ] } ], "source": [ "ex_data = {'Молодец':'Да', 'Кто': 'Ты:)'}\n", "f = open('Task_5.liga', 'wb')\n", "pickle.dump(ex_data, f)\n", "f.close()\n", "\n", "f = open('Task_5.liga', 'rb')\n", "el_data = pickle.load(f)\n", "f.close()\n", "print(el_data)\n", "print(type(el_data))" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b'\\x80\\x03}q\\x00(X\\x0e\\x00\\x00\\x00\\xd0\\x9c\\xd0\\xbe\\xd0\\xbb\\xd0\\xbe\\xd0\\xb4\\xd0\\xb5\\xd1\\x86q\\x01X\\x04\\x00\\x00\\x00\\xd0\\x94\\xd0\\xb0q\\x02X\\x06\\x00\\x00\\x00\\xd0\\x9a\\xd1\\x82\\xd0\\xbeq\\x03X\\x06\\x00\\x00\\x00\\xd0\\xa2\\xd1\\x8b:)q\\x04u.'\n" ] } ], "source": [ "f = open('Task_5.liga', 'rb')\n", "el_d = f.read()\n", "f.close()\n", "print(el_d)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'Молодец': 'Да', 'Кто': 'Ты:)'}\n", "\n" ] } ], "source": [ "import pickle\n", "f = open('Task_5.liga', 'rb')\n", "el_data = pickle.load(f)\n", "f.close()\n", "print(el_data)\n", "print(type(el_data))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }