{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Занятие 14" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Сохранение данных в файл. Обработка исключений" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Модуль ***time***." ] }, { "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", " 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": [] }, { "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": [] }, { "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": null, "metadata": {}, "outputs": [], "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": null, "metadata": {}, "outputs": [], "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": null, "metadata": {}, "outputs": [], "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": null, "metadata": {}, "outputs": [], "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": null, "metadata": {}, "outputs": [], "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": null, "metadata": {}, "outputs": [], "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*\n", "\n", "Пример использования модуля. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "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": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Задача 5\n", "\n", "Прочитайте данные из файла с именем ‘Task_5.liga’ в двоичном режиме. Выведите прочтенные данные. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Задача 6\n", "\n", "Чем необходимо воспользоваться, чтобы декодировать прочтенную строку байтов из предыдущей задачи? " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Задача 7\n", "\n", "Напишите мини-игру, в которой пользователь будет угадывать загаданное программой слово. Программа может загадать либо “да”, либо “нет”. Время отгадывание должно быть ограничено 5 секундами. Счет игрока должен сохраняться в файл. " ] }, { "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 }