From 2435ddbfc797c6f3a1641e74a75b8b2dd6bdfdbb Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 20 Oct 2025 19:53:27 +0000 Subject: [PATCH] add lesson 2 --- 00_intro.ipynb | 25 ++ 01_variables.ipynb | 585 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 610 insertions(+) create mode 100644 01_variables.ipynb diff --git a/00_intro.ipynb b/00_intro.ipynb index 5775df4..8584bc5 100644 --- a/00_intro.ipynb +++ b/00_intro.ipynb @@ -164,6 +164,31 @@ "source": [ "# решение задания 2" ] + }, + { + "cell_type": "markdown", + "id": "e723a4b9-9a71-4a32-bfa8-2b4456c8c4ae", + "metadata": {}, + "source": [ + "3. А можешь ли ты записать программу эквивалентную\n", + "\n", + "```python\n", + "print(\"i like pizza\")\n", + "print(\"it's really good\")\n", + "```\n", + "\n", + "но используя `print` только один раз?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa4f0d76-adc0-4299-be92-55689aec8e17", + "metadata": {}, + "outputs": [], + "source": [ + "# решение задания 3" + ] } ], "metadata": { diff --git a/01_variables.ipynb b/01_variables.ipynb new file mode 100644 index 0000000..3a7a039 --- /dev/null +++ b/01_variables.ipynb @@ -0,0 +1,585 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "74336365-6e70-4b47-aeab-07c3a789693b", + "metadata": {}, + "source": [ + "# Переменные." + ] + }, + { + "cell_type": "markdown", + "id": "d93f7e89-b6c2-43fb-8b00-076a3cb05b78", + "metadata": {}, + "source": [ + "Переменные - это контейнеры для значений таких как строк, чисел, чисел с плавающей точкой, или булевых значений. Переменная ведет себя так же как и значение, которое хранит. Каждая переменная должна иметь уникальное имя. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "da325993-dcbf-45f8-8984-535e6071ddff", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Vlad\n" + ] + } + ], + "source": [ + "first_name = \"Vlad\" # задали переменную first_name со значением Vlad\n", + "print(first_name) # аналогично print(\"Vlad\")" + ] + }, + { + "cell_type": "markdown", + "id": "71207199-4c93-4855-9e86-ec3015737991", + "metadata": {}, + "source": [ + "Допустим, мы хотим поприветствовать `first_name` и распечатать что-то типа \"Hello, Vlad\", для таких целей мы можем использовать форматируемые строки. В `python` если строка форматировуема, то перед ней ставят `f`. Посмотрим на примере" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "59a87db9-26be-4509-ac6f-f607322084ce", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello, Vlad\n" + ] + } + ], + "source": [ + "first_name = \"Vlad\"\n", + "print(f\"Hello, {first_name}\") # в поле {first_name} подставится Vlad" + ] + }, + { + "cell_type": "markdown", + "id": "eb492fc6-d1a6-46e4-8f95-848bd684c7ee", + "metadata": {}, + "source": [ + "Заметим, что если не обозначить вид строки как форматируемой, то у нас напечатается \n", + "буквально что написано между кавычек, и ничего не подставится." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "cf394481-6838-41a4-8647-f7e2c336d9ce", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello, {first_name}\n" + ] + } + ], + "source": [ + "first_name = \"Vlad\"\n", + "print(\"Hello, {first_name}\") # нет f перед строкой" + ] + }, + { + "cell_type": "markdown", + "id": "20e38d70-603d-446f-9fe4-274e6fc2b4ae", + "metadata": {}, + "source": [ + " Мы можем заводить сколько угодно различных переменных. Например" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "495c12a8-3caf-40cf-8935-068539188b29", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello Vlad\n", + "you like pizza\n" + ] + } + ], + "source": [ + "first_name = \"Vlad\" # переменная 1\n", + "food = \"pizza\" # переменная 2\n", + "print(f\"hello {first_name}\")\n", + "print(f\"you like {food}\")" + ] + }, + { + "cell_type": "markdown", + "id": "28c4ba52-4bd0-4849-b909-53b70a96eab5", + "metadata": {}, + "source": [ + "Стоит отметить, что имя (`first_name`, `food`, и т.д.) переменной должно описывать ее содержимое. Это правило не является обязательным с точки зрения языка программирования, но для последующего понимания написанного стоит использовать описательные имена." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "baebcfa3-0b1b-4ccb-aba7-b60af075ff25", + "metadata": {}, + "outputs": [], + "source": [ + "kjhskdfhj = \"pizza\" # не описательное имя переменной\n", + "food = \"pizza\" # описательное имя переменной" + ] + }, + { + "cell_type": "markdown", + "id": "ab3d7fb5-658c-488e-8ae8-5b27eafe6ad4", + "metadata": {}, + "source": [ + "Добавим еще одно поле/переменную в нашу программу." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "33907261-c04d-499b-8bc8-e7e95a6804b8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello Vlad\n", + "you like pizza\n", + "your email is vlad@marmelad.com\n" + ] + } + ], + "source": [ + "first_name = \"Vlad\" # переменная 1\n", + "food = \"pizza\" # переменная 2\n", + "email = \"vlad@marmelad.com\" # переменная 3\n", + "\n", + "print(f\"hello {first_name}\")\n", + "print(f\"you like {food}\")\n", + "print(f\"your email is {email}\")" + ] + }, + { + "cell_type": "markdown", + "id": "dc6d5342-5985-4841-81b3-0bdf717cfd94", + "metadata": {}, + "source": [ + "Пока что все введенные нами переменные (`first_name`, `food`, `email`) являлись переменными строкового типа." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ecbc13b2-1b01-4877-903e-064ba8f4b54f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# при помощи функции type можно посмотреть тип переменной\n", + "print(type(first_name)) " + ] + }, + { + "cell_type": "markdown", + "id": "139999c5-7b17-4765-9665-33e109ebbe53", + "metadata": {}, + "source": [ + "Теперь добавим в программу целочисленные переменные (типа `int`),\n", + "которые будут хранить в себе целые числа." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "b15d0bba-7858-44ef-8d20-1733ecdf5b77", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello Vlad\n", + "you like pizza\n", + "your email is vlad@marmelad.com\n", + "you are 18 years old\n", + "you are buying 3 items\n", + "your class has 30 students\n" + ] + } + ], + "source": [ + "first_name = \"Vlad\" # str\n", + "food = \"pizza\" # str\n", + "email = \"vlad@marmelad.com\" # str\n", + "\n", + "age = 18 # int\n", + "quantity = 3 # int\n", + "num_of_students = 30 # int\n", + "\n", + "print(f\"hello {first_name}\")\n", + "print(f\"you like {food}\")\n", + "print(f\"your email is {email}\")\n", + "print(f\"you are {age} years old\")\n", + "print(f\"you are buying {quantity} items\")\n", + "print(f\"your class has {num_of_students} students\")" + ] + }, + { + "cell_type": "markdown", + "id": "0daec73c-adfd-4e9b-a426-09628c241db4", + "metadata": {}, + "source": [ + "Названия типов данных - сокращения. Например: \n", + "* `int` - integer\n", + "* `str` - string\n", + "* `float` - floating point number\n", + "* `bool` - boolean" + ] + }, + { + "cell_type": "markdown", + "id": "72c38d28-fc0a-4065-9685-89408903c9c9", + "metadata": {}, + "source": [ + "Познакомимся еще с одним типом данных - `float` (числа с плавающей запятой)." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "165c57aa-505e-4991-a9a6-f6c5791c2407", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "price = 10.99 # переменная типа float\n", + "print(type(price))" + ] + }, + { + "cell_type": "markdown", + "id": "c394be28-9977-4ee3-8727-f1e2b3281546", + "metadata": {}, + "source": [ + "Вместо привычной запятой для разделения целой и дробной частей ставится точка." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a3e1ac8a-1fdf-47d5-a54b-18a8f9af6fbd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The price is $10.99\n", + "your gpa is: 3.2\n", + "you ran 5.5km\n" + ] + } + ], + "source": [ + "price = 10.99\n", + "gpa = 3.2\n", + "distance = 5.5\n", + "\n", + "print(f\"The price is ${price}\")\n", + "print(f\"your gpa is: {gpa}\")\n", + "print(f\"you ran {distance}km\")" + ] + }, + { + "cell_type": "markdown", + "id": "ed2f86dd-68ce-4d3e-a7f6-02b83cc2dafa", + "metadata": {}, + "source": [ + "Познакомимся с еще одним типом данных - `bool` (boolean), который может хранить только 2 значения `True` или `False`. Он часто используется в так называемых \"флагах\", чтобы обозначить состояние чего-либо. Но наиболее часто он неявно используется в ветвлениях, циклах и т.д." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "0c804bb5-bbd6-497e-89e6-d9ae7343ff1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "are you a student?: True\n" + ] + } + ], + "source": [ + "is_student = True # создали переменную типа bool со значением True\n", + "\n", + "print(f\"are you a student?: {is_student}\")" + ] + }, + { + "cell_type": "markdown", + "id": "ce5e7881-ac15-4346-80eb-0edfa7e47069", + "metadata": {}, + "source": [ + "Переменную типа `bool` можно использовать в конструкции `if`-`elif`-`else`, то есть при проверке условия. Например " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "3819a7b1-c506-4308-993c-4d23faafbc87", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "you are a student\n" + ] + } + ], + "source": [ + "is_student = True\n", + "\n", + "if is_student: # если is_student это True\n", + " print(\"you are a student\") # то печатаем сообщение о том, что вы студент\n", + "else: # иначе (is_student это False)\n", + " print(\"you are NOT a student\") # то печатаем сообщение о том, что вы НЕ студент" + ] + }, + { + "cell_type": "markdown", + "id": "1ef25f0a-7ebd-4ed4-bd44-27396aa8ebaf", + "metadata": {}, + "source": [ + "В данном случае `is_student = True`, поэтому печатается \"you are a student\". Но если мы изменим `is_student` на `False`, то сработает блок `else`." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "534d8de1-cd44-4577-9223-73f8e2e7b786", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "you are NOT a student\n" + ] + } + ], + "source": [ + "is_student = False\n", + "\n", + "if is_student: # если is_student это True\n", + " print(\"you are a student\") # то печатаем сообщение о том, что вы студент\n", + "else: # иначе (is_student это False)\n", + " print(\"you are NOT a student\") # то печатаем сообщение о том, что вы НЕ студент" + ] + }, + { + "cell_type": "markdown", + "id": "457bc90f-b7e5-497d-980e-456b332165a8", + "metadata": {}, + "source": [ + "Приведем еще один пример." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "abc2b8ed-2d92-4289-a155-1172a98fe438", + "metadata": {}, + "outputs": [], + "source": [ + "for_sale = True\n", + "\n", + "if for_sale:\n", + " print(\"that item is for sale\")\n", + "else:\n", + " print(\"that item is not for sale\")" + ] + }, + { + "cell_type": "markdown", + "id": "be480bb2-8353-4e49-b2ca-7953f30f1e79", + "metadata": {}, + "source": [ + "В этом случае `for_sale = True`, поэтому срабатывает первый `print`. Если бы мы поменяли `for_sale` на `False`, то сработал бы блок `else`." + ] + }, + { + "cell_type": "markdown", + "id": "9513fa8f-3190-4479-a23f-e7efd2f895d2", + "metadata": {}, + "source": [ + "# Задания." + ] + }, + { + "cell_type": "markdown", + "id": "3bcafa63-5c4b-4f5d-8d8d-943ec9e64567", + "metadata": {}, + "source": [ + "1. Ниже, создайте программу, в которой задается переменная с именем `country` и ей присваивается страна, в которой вы живете. Добавьте `print` с соответствующей информацией как мы делали в примерах." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21f893ba-e0f1-4c72-a060-af8d6d2ab17f", + "metadata": {}, + "outputs": [], + "source": [ + "# решение задания №1" + ] + }, + { + "cell_type": "markdown", + "id": "0a30e8d2-f078-4dce-a052-dc45bc77253d", + "metadata": {}, + "source": [ + "2. Добавьте к предыдущей программе целочисленную переменную, определяющее количество людей, живущее в стране `country`. Название переменной придумайте самостоятельно. Не забывайте, что по её названию должно быть понятно её содержимое. Также добавьте `print`, который будет печатать сообщение о количестве человек, живущей в стране `country`.\n", + "\n", + "P.S. А сможете ли вы объединить два разных типа в одном `print`? Напишите выражение типа \"в стране X живет Y человек\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81a0ebf0-2148-4dfe-8e4f-8264452ee00b", + "metadata": {}, + "outputs": [], + "source": [ + "# решение задания №2" + ] + }, + { + "cell_type": "markdown", + "id": "89705a7a-71ec-4498-82b5-03a2c06d2226", + "metadata": {}, + "source": [ + "3. Добавьте в вашу программу переменную типа `float` с именем `avg_age`, в которой будет хранится средний возраст человека в стране `country` с точностью до 2 знаков после запятой (точки). Обновите свое(и) `print` выражение(я), добавив туда новую информацию." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00de321a-a023-4c37-bebb-bae790864a03", + "metadata": {}, + "outputs": [], + "source": [ + "# решение задания №3" + ] + }, + { + "cell_type": "markdown", + "id": "be167590-41a0-48c0-9cfc-1e680268b47e", + "metadata": {}, + "source": [ + "4. Введите еще одну переменную типа `bool`. Придумайте самостоятельно для нее название, отражающее, что она будет обозначать. Добавьте `if`-`else` конструкцию, которая будет выводить разные сообщения в зависимости от значения вашей переменной." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ecdfa67-14e8-470d-a925-93d200c0f9be", + "metadata": {}, + "outputs": [], + "source": [ + "# решение задания №4" + ] + }, + { + "cell_type": "markdown", + "id": "d8c63a30-ab66-47b1-8029-a3e0773cfc7c", + "metadata": {}, + "source": [ + "5. Проверьте название типа своей созданной \"булевой переменной\" при помощи функции `type`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "754202e3-4cbc-44a4-a0dc-3563c7076bd0", + "metadata": {}, + "outputs": [], + "source": [ + "# решение задания №5" + ] + }, + { + "cell_type": "markdown", + "id": "7b67b41b-552f-4ce3-ad5e-67f90b669441", + "metadata": {}, + "source": [ + "P.S. В новых версиях `python` можно удобно обозначать типы данных при создании переменных, например" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "fe9ed608-5f41-4b8f-8eed-682b805fd95b", + "metadata": {}, + "outputs": [], + "source": [ + "age: int = 18 # переменная типа int\n", + "gpa: float = 4.0 # переменная типа float\n", + "is_student: bool = True # переменная типа bool\n", + "name: str = \"Vlad\" # переменная типа str" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}