diff --git a/content/lab01.rst b/content/lab01.rst index 952fffa..bfc2a2b 100644 --- a/content/lab01.rst +++ b/content/lab01.rst @@ -26,12 +26,12 @@ **Для отступов в Python значительно удобнее использовать пробелы, а не табуляцию**. -Для ввода одной **строки** данных с клавиатуры используется команда :python:`input()`. Для вывода результата — :python:`print()`; +Для ввода одной **строки** данных с клавиатуры используется команда :python:`input()`. Для вывода результата — :python:`print()`: .. code-block:: python a = input() # Ввод строки - print(a) # Вывод переменной + print(a) # Вывод переменной Для запуска программы `application.py` на «рабочем столе» необходимо в консоли перейти в папку с программой @@ -81,13 +81,13 @@ Неизменяемые типы данных ------------------------ -* Числовые (:python:`int`, :python:`float`, :python:`complex`); -* Логический (:python:`bool`) -* Строки (:python:`str`) **нельзя менять отдельные буквы в строке — только создав новую строку**; -* Кортеж (:python:`tuple`) **не позволяет изменять набор, но может содержать изменяемые элементы**; -* Замороженное множество (:python:`frozenset`); -* Функции **имя функции также является переменной, и может быть переопределено**. -* Классы **но не экземпляры классов** +* Числовые (:python:`int`, :python:`float`, :python:`complex`). +* Логический (:python:`bool`). +* Строки (:python:`str`) **нельзя менять отдельные буквы в строке — только создав новую строку**. +* Кортеж (:python:`tuple`) **не позволяет изменять набор, но может содержать изменяемые элементы**. +* Замороженное множество (:python:`frozenset`). +* Функции. **Имя функции также является переменной, и может быть переопределено**. +* Классы. **Но не экземпляры классов**. Изменяемые типы данных ---------------------- @@ -96,10 +96,11 @@ * Множество (:python:`set`) — неповторяющийся набор *неизменяемых* элементов * Словарь (:python:`dict`) — таблица соответствия *ключ* → *значение*. *Ключ* обязательно *неизменяемый*, *значение* любое. -Для *определения* типа переменной (например `x`), использовать функцию ``type``. Для *проверти* типа — используется оператор ``is``. +Для *определения* типа переменной (например `x`) можно использовать функцию ``type``. Для *проверки* типа используется оператор ``is``. :python:`type(x) is int`. +Также для *проверки* типа может использоваться функция :python:`isinstance`. Подробнее о которой, правда, стоит говорить в теме, посвящённой классам в Питоне. Циклы и ветвления ================= @@ -135,8 +136,8 @@ .. code-block:: python start = 1 # первый элемент прогрессии - stop = 100 # ограничение прогрессии - step = 2 # шаг прогрессии + stop = 100 # ограничение прогрессии + step = 2 # шаг прогрессии for i in range(start, stop, step): print(i) @@ -159,11 +160,12 @@ .. code-block:: python start = 1 # первый элемент прогрессии - stop = 100 # ограничение прогрессии - step = 2 # шаг прогрессии + stop = 100 # ограничение прогрессии + step = 2 # шаг прогрессии i = start + while i < stop: print(i) i += step @@ -183,7 +185,7 @@ ''' elif <условие 2>: ''' - выполняется, если <условие 2> истинно а предыдущие ложны. Может отсутствовать. + выполняется, если <условие 2> истинно, а предыдущие ложны. Может отсутствовать. ''' elif <условие 3>: ''' @@ -207,8 +209,10 @@ .. code-block:: python i = 1 + while True: # запускаем бесконечный цикл i += 1 # увеличиваем i + if i > 100: break # останавливаемся, если перешли через 100 if i % 2 == 0: @@ -272,7 +276,7 @@ +--------------------------+---------------------------------------------------------------------------------------+ -Работа с множествами +Работа со множествами -------------------- +----------------------------------------------+------------------------------------------------------------------------------------+ @@ -325,7 +329,7 @@ | :python:`A > B` | A ⊃ B | +----------------------------------------------+------------------------------------------------------------------------------------+ - Поведение `discard` и `remove` различается тогда, когда удаляемый элемент *отсутствует* в множестве: `discard` не делает ничего, а метод remove возвращает ошибку, как и `pop`. + Поведение `discard` и `remove` различается тогда, когда удаляемый элемент *отсутствует* во множестве: `discard` не делает ничего, а метод `remove` возвращает ошибку, как и `pop`. Операции со словарем -------------------- @@ -387,17 +391,21 @@ ''' Функция выводит данные и из тип. ''' - if type(x) is dict: # вывод словаря + if type(x) is dict: print('Dict') + for i in x: my_out(i) print('> ', end='') my_out(x[i]) + print('End dict') elif type(x) in (set, frozenset, list, tuple): print('Iter') + for i in x: my_out(i) + print('End iter') elif type(x) in (int, float, complex): print("digit", x) @@ -433,13 +441,11 @@ # Пример вызова функции - print(my_sum(1,2,3)) # 1 + 2 + 3= 6 - + print(my_sum(1, 2, 3)) # 1 + 2 + 3= 6 print(my_sum(1)) # 1 + 10 + 100 = 111 - print(my_sum(1, c=4)) # 1 + 10 + 4 = 15 -**ВАЖНО** Инициализация данных по умолчанию проводиться только один раз — во время создания функции. При вызове функции происходит присваивание незаданным параметрам **инициализированные** значения. Т.е. **не стоит использовать в качестве значений по умолчанию изменяемые данные**. +**ВАЖНО**: Инициализация данных по умолчанию проводиться только один раз — во время создания функции. При вызове функции происходит присваивание незаданным параметрам **инициализированные** значения. Т.е. **не стоит использовать в качестве значений по умолчанию изменяемые данные**. Функции с неизвестным количеством параметров -------------------------------------------- @@ -447,9 +453,9 @@ .. code-block:: python - def <имя функции>(*argv, **kwargs): + def <имя функции>(*args, **kwargs): ''' - argv - список неименованных данных + args - список неименованных данных kwargs - словарь именованных параметров ''' @@ -457,18 +463,18 @@ .. code-block:: python - def my_sum(*argv): + def my_sum(*args): s = 0 - for i in argv: + + for i in args: s += i + return s # Пример вызова функции - print(my_sum(1,2,3)) # 1 + 2 + 3= 6 - + print(my_sum(1, 2, 3)) # 1 + 2 + 3= 6 print(my_sum(1)) # 1 = 1 - print(my_sum(1, 4)) # 1 + 4 = 5 @@ -520,19 +526,19 @@ Основные методы --------------- -+----------------------------------------+------------------------------------------------------------------------------+ -| Метод | Описание | -+========================================+==============================================================================+ -| :python:`s.find(sub, start=0)` | Ищет `sub` в строке `s[start:]`. -1, если не найдена | -+----------------------------------------+------------------------------------------------------------------------------+ -| :python:`s.index(sub, start=0)` | Ищет `sub` в строке `s[start:]`. Ошибка, если `sub` не найдена | -+----------------------------------------+------------------------------------------------------------------------------+ -| :python:`s.replace(old, rep, cnt=-1)` | Возвращает строку `s`, с заменёнными `old` на `rep`, не более чем `cnt` раз. | -| | Если `cnt == -1`, то заменяет все вхождения | -+----------------------------------------+------------------------------------------------------------------------------+ -| :python:`s.split(sep=None, maxcnt=-1)` | Создаёт список подстрок `s`, используя `sep` в качестве разделителя. | -| | Если `sep == None`, разделяет по любым пробельным символам | -+----------------------------------------+------------------------------------------------------------------------------+ ++------------------------------------------+------------------------------------------------------------------------------------------+ +| Метод | Описание | ++==========================================+==========================================================================================+ +| :python:`s.find(sub, start=0)` | Ищет `sub` в строке `s[start:]`. -1, если не найдена. | ++------------------------------------------+------------------------------------------------------------------------------------------+ +| :python:`s.index(sub, start=0)` | Ищет `sub` в строке `s[start:]`. Ошибка, если `sub` не найдена. | ++------------------------------------------+------------------------------------------------------------------------------------------+ +| :python:`s.replace(old, rep[, max])` | Возвращает строку `s`, с заменёнными `old` на `rep`. | +| | Если третий параметр задан, то заменяются только первые `max` вхождений подстроки `old`. | ++------------------------------------------+------------------------------------------------------------------------------------------+ +| :python:`s.split(sep=None, maxsplit=-1)` | Создаёт список подстрок `s`, используя `sep` в качестве разделителя. | +| | Если `sep == None`, разделяет по любым пробельным символам. | ++------------------------------------------+------------------------------------------------------------------------------------------+ Задача 1 @@ -555,4 +561,3 @@ -------- Создать список чисел меньших 2500, оканчивающихся на 1 и являющихся квадратами целых чисел. -