2020-05-10 21:48:23 +03:00
{
"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",
2020-05-10 21:50:47 +03:00
"Напишите мини-игру, в которой пользователь будет угадывать загаданное программой слово. Программа может загадать либо “да”, либо “нет”. Время отгадывание должно быть ограничено 5 секундами. Счет игрока(сколько раз пользователь отгадал слово) должен сохраняться в файл. "
2020-05-10 21:48:23 +03:00
]
},
{
"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
}