1_semester_python_liga/Lesson_14.ipynb
2020-05-10 23:48:23 +05:00

409 lines
9.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}