Python base

Автор - Атнагулов Артур

Python base

Значения

набор знаков, представляющие другие объекты
значение пример
True
print(True)  # True
42
print(42)  # 42
42.5
print(42.5)  # 42.5
'кошка'
print('кошка')  # кошка

Типы

определяют, что какие операции можно делать со значениями
значение тип операции
True
bool логический
not
42
int число
+ - * /
42.5
float число с плав. точкой
+ - * /
'кошка'
string строчка
+

Типы — пример

print(not True)  # False
print(42 * 2)  # 84
print('кошка' + ' ' + 'ест корм')  # кошка ест корм

# TypeError: can't multiply sequence by non-int of type 'str'
print('кошка' * ' ' * 'ест корм')  

Переменные

место, где хранятся значения
переменная значение тип операции
is_enabled = 
True
bool логический
not
num = 
42
int число
+ - * /
num_half =
42.5
float число с плав. точкой
+ - * /
animal = 
'кошка'
string строчка
+

Переменные — пример

num = 42  # объявление числовой переменной
print(num)  # используем (печатаем) переменную

multiplied_num = num * 2  # выполнение операции с записью
print(multiplied_num)

print(multiplied_num * 2)  # выполнение операции и печать

Операторы

присваивание
=
num = 42  # 42
сравнение
==
num == 42  # True
отрицание
!=
num != 42  # False

Операторы

и логическое
and
a == 30 and b == 40  # False
или логическое
or
a == 30 or b == 40  # True
арифметические
+ - * / 
2 + 2  # 4
result = a == 30 or b == 40 and num != 42 * 2  # комбинация

Функция

выполняет операции
принимает аргументы
возвращает значения
() — скобки вызывают функцию
print  # ничего не произойдет
print()  # вызов функции

Функция print

выполняет печатает информацию на экран
принимает значения для печати любых типов
возвращает ничего
print('кошка')  # кошка
print(42 * 4)  # 84

Функция input

выполняет чтение с экрана
принимает текст для вывода на консоль перед чтением (необ.)
возвращает
string
animal = input()  # Вводим: кошка
print(animal)  # кошка

Функция input

# Напечатается "Введите имя кошки", потом предложат ввести имя
name = input('Введите имя кошки')  
print(name)  # Барсик

num = input()  # Вводим 42
print(num * 2)  # 4242
# 42 - строчка, поэтому умножается как строчка, а не число

Функции превращения типов

str_num = input()  # Вводим 42
print(str_num * 2)  # 4242
num = int(str_num)  # превратили в число
print(str_num * 2)  # 84
# превращаем в логический тип
print(bool(num))  # True      
print(bool(0))  # False

Функции над типами

animal = "Кошка"
animal.upper()  # КОШКА - превращение в верхний регистр
#                 ^^^^^ возвращаемое значение
animal.lower()  # кошка - превращение в нижний
animal.find('ш')  # 2 - найти позицию символа
#           ^^^ принимаемое значение

Ссылочные
типы

Тип "список" (list)

lst = [1, 2, 3]
lst[0]  # 1 - индексация с начала (с 0)
#   ^ индекс
lst[-1]  # 3 - индексация с конца
2 in lst  # True - проверяет наличие элемента в списке
lst.append(4)  # добавляет элемент в список
print(lst)  # [1, 2, 3, 4]

Тип "кортеж" (tuple) - неизменяемый

tup = (1, 2, 3)
tup[0]  # 1 - индексация с начала (с 0)
#   ^ индекс
tup[-1]  # 3 - индексация с конца
2 in tup  # True - проверяет наличие элемента в списке
tup.append(4)  # нельзя
first, second, third = tup  # распакова в отдельные переменные

Тип "словарь" (dict)

eng_rus_dict = {
    "car": "машина",
    "cat": "кошка"
}
eng_rus_dict["car"]  # машина - получение элемента
"animal" in eng_rus_dict  # False - проверка наличия в словаре

Тип "словарь" (dict)

# получение списков
eng_rus_dict.values()  # значения: ["машина", "кошка"]
eng_rus_dict.keys()  # ключи: ["car", "cat"]

# кортежи с ключами и значениями
eng_rus_dict.items()  # [ ("car", "машина"), ("cat", "кошка") ]

Объекты

# создаем объект с параметрами и записываем его в переменную
point = Point(10, 15)  
# свойства — переменные в объекте
print(point.x)  # печатаем значение свойства x
# метод - функция в объекте
point.draw()  # отрисовываем точку

Условия
и циклы

Условия

if "car" in eng_rus_dict:  # проверка логического условия
#   ^^^^^^^^^^^^^^^^^^^^ вернет bool (True или False)
    print('Машина есть в словаре')
elif "cat" in eng_rus_dict:
    print('Кошка есть в словаре')
else:
    print('Ничего нет в словаре')
        

Функция range

выполняет генерирует числовые последовательности
принимает макс. число или мин. число, макс. число или ...
возвращает
tuple  # (0, 1, 2, 3, 4, ...)
range(4)  # (0, 1, 2, 3)
range(2, 5)  # (2, 3)

Цикл for

повторяет операцию несколько раз
for i in range(4):  # 4 раз печатаем значение счетчика
    print(i)
# 0
# 1
# 2
# 3
        

Цикл for

принудительный выход
for i in range(4):
    print(i)
    if i == 1:
        break
# 0
# 1
        

Цикл for

пропуск шага
for i in range(4):
    if i == 1:
        continue
    print(i) 
# 0
# 2
# 3
        

Цикл for

перебор списка
lst = ["картошка", "капуста", "хлеб"]
for item in lst:
    print(item)
# картошка
# капуста
# хлеб
        

Цикл for

перебор словаря items() возвращает список кортежей
for item in eng_rus_dict.items():  # [ ("car", "машина"), ... ]
    eng_word, rus_word = item  # распаковываем кортеж
    print(eng_word, rus_word)  # печатаем значения двух 
                               # переменных подряд 
# car машина
# cat кошка
        

Цикл for

перебор словаря — распаковываем сразу
for eng_word, rus_word in eng_rus_dict.items():
    print(eng_word, rus_word)  # печатаем значения 
# car машина
# cat кошка
        

Цикл while

работает, пока выполняется условие
i = 0
while i != 5:  # пока i не станет 5
    i += 1  # прибавляем и присваиваем
print(i)  # 5 - свершилось
        

Типы
алгоритмов

Последовательность

список шагов для выполнения
  1. Встать
  2. Почистить зубы
  3. Сделать зарядку
  4. Поесть

Условие

список шагов для выполнения
  1. если дверь в ванную закрыта то
    1. Открыть дверь
  2. Почистить зубы

Цикл

повтор действий
  1. для каждого зуба делать
    1. Почистить поверхность
    2. Почистить с внешней стороны
    3. Почистить с внутренней стороны

Задача

Задача:
Посчитать количество букв "а" в тексте

Определяем шаги

Задача:
Посчитать количество букв "а" в тексте

Определяем тип каждого шага
  1. Прочитать текст — функция
  2. Пройтись по тексту — перебрать весь текстцикл
  3. Найти буквы "а" — если это буква "a", посчитать ееусловие
  4. Вывести результат на экран — функция

Задача:
Посчитать количество букв "а" в тексте

Переносим в код в виде комментариев
            # Прочитать текст — функция
            # Перебрать весь текст — цикл
            # Если это буква "a", посчитать ее — условие
            # Вывести результат на экран — функция
        

Задача:
Посчитать количество букв "а" в тексте

Читаем
            text = input()
            # Перебрать весь текст — цикл
            # Если это буква "a", посчитать ее — условие
            # Вывести результат на экран — функция
        

Задача:
Посчитать количество букв "а" в тексте

Пишем цикл
            text = input()
            for symbol in text:
            # Если это буква "a", посчитать ее — условие
            # Вывести результат на экран — функция
        

Задача:
Посчитать количество букв "а" в тексте

Условие — выполняется для каждого символа. Значит в цикле.
            text = input()
            for symbol in text:
              if symbol == "a":
              # посчитать ее - считать надо в какую-то переменную
            # ...
        

Задача:
Посчитать количество букв "а" в тексте

Создаем счетчик и считаем
            text = input()
            counter = 0
            for symbol in text:
              if symbol == "a":
                  counter += 1
            # ...
        

Задача:
Посчитать количество букв "а" в тексте

            text = input()
            counter = 0
            for symbol in text:
              if symbol == "a":
                  counter += 1
            print(counter)  # печатаем
        

Табы (отступы) — это важно

            text = input()
            counter = 0
            for symbol in text:
            <tab>if symbol == "a":
            <tab><tab>counter += 1
            print(counter)
        

Табы (отступы) — блок "цикл"

            text = input()
            counter = 0
            for symbol in text:
              if symbol == "a":
                  counter += 1
            print(counter)
        

Табы (отступы) — блок "условие"

            text = input()
            counter = 0
            for symbol in text:
              if symbol == "a":
                  counter += 1
            print(counter)
        

Модули и импорты

Импорт — подключение готовых решений к файлу

            import math  # подключаем модуль math
            # использование: возводим 2 в степень 3
            pow = math.pow(2, 3)
            print(pow)  # 8
        

Импорт — подключение готовых решений к файлу

            import math as m  # подключаем модуль math
            #              ^ алиас - переименование модуля
            # использование: возводим 2 в степень 3
            pow = m.pow(2, 3)
            print(pow)  # 8
        

Метод в модуле

            import math as m  # подключаем модуль math
            # использование: возводим 2 в степень 3
            pow = m.pow(2, 3)
            #       ^^^ метод из модуля
            print(pow)  # 8
            #     ^^^ переменная
        

Написание функции

Задача:
написать функцию деления с остатком. Результаты должны печататься на экран

Задача:
написать функцию деления с остатком. Результаты должны печататься на экран

            def divide(a, b, with_mod=False):
              pass  # пустое тело функции
        
kwarg (keyword argument) — аргумент со значением по умолчанию. Его можно не заполнять при вызове функции.
                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          res -= 1
                          print("Результат", res)
                          if with_mod:
                             mod = a - res * b
                             print("Остаток", mod)
                          return res
                    

Проверка

                        first = 25
                        second = 4
                        with_mod = True
                        divide(first, second, with_mod)
                        # Делим 25 на 4
# Результат 6
# Остаток 1
                        
                    
                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          res -= 1
                          print("Результат", res)
                          if with_mod:
                             mod = a - res * b
                             print("Остаток", mod)
                          return res
                    

Проверка

                        first = 25
                        second = 4
                        with_mod = True
                        divide(first, second, with_mod)
                        # Делим 25 на 4
# Результат 6
# Остаток 1
                        
                    

Области видимости

            def divide(a, b, with_mod=False):
              # функция: first, second - тут не существует
             
            # глобальная: a, b - тут не существует
            first = 25
            second = 4
            with_mod = True
            divide(first, second, with_mod)
        

Повтор

Тест

                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          # ...
                          if with_mod:
                             mod = a - res * b
                          return res
                        first = 25
                        second = 4
                        with_mod = True
                        divide(first, second, with_mod)
                    
Чем является выделенный кусок кода?
  1. Переменная
  2. Числовое значение
  3. Строковое значение
Ответ: Числовое значение
                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          # ...
                          if with_mod:
                             mod = a - res * b
                          return res
                        first = 25
                        second = 4
                        with_mod = True
                        print("with_mod")
                        divide(first, second, with_mod)
                    
Чем является выделенный кусок кода?
  1. Логическая переменная
  2. Числовая переменная
  3. Логическое значение
Ответ: Логическая переменная
                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          # ...
                          if with_mod:
                             mod = a - res * b
                          return res
                        first = 25
                        second = 4
                        with_mod = True
                        print("with_mod")
                        divide(first, second, with_mod)
                    
Чем является выделенный кусок кода?
  1. Логическая переменная
  2. Строковое значение
  3. Строковая переменная
Ответ: Строковое значение
                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          # ...
                          if with_mod:
                             mod = a - res * b
                          return res
                        first = 25
                        second = 4
                        with_mod = True
                        divide(first, second, with_mod)
                    
Чем является выделенный кусок кода?
  1. Переменная
  2. Аргумент функции
  3. Ключевое слово
Ответ: Аргумент функции
                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          # ...
                          if with_mod:
                             mod = a - res * b
                          return res
                        first = 25
                        second = 4
                        with_mod = True
                        divide(first, second, with_mod)
                    
Чем является выделенный кусок кода?
  1. Аргумент функции
  2. Условный оператор
  3. Строковое значение
Ответ: Условный оператор
                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          # ...
                          if with_mod:
                             mod = a - res * b
                          return res
                        first = 25
                        second = 4
                        with_mod = True
                        divide(first, second, with_mod)
                    
Чем является выделенный кусок кода?
  1. Строковая переменная
  2. Числовая переменная
  3. Ключевое слово
Ответ: Числовая переменная
                        def divide(a, b, with_mod=False):
                          res = 1
                          while res * b < a:
                             res += 1
                          # ...
                          if with_mod:
                             mod = a - res * b
                          return res
                        first = 25
                        second = 4
                        with_mod = True
                        divide(first, second, with_mod)
                    
Какое значение примет переменная a внутри функции?
  1. 4
  2. True
  3. 25
Ответ: 25
                        str_num = input()  # Вводим 42
                        print(str_num * 2)
                        num = int(str_num)
                        print(str_num * 2)
                        print(bool(num))
                        print(bool(0))
                    
Значение какого типа будет записано в эту переменную?
  1. int
  2. string
  3. bool
Ответ: string
                        str_num = input()  # Вводим 42
                        print(str_num * 2)
                        num = int(str_num)
                        print(str_num * 2)
                        print(bool(num))
                        print(bool(0))
                    
Что будет напечатано в результате выполнения этой строчке?
  1. 42
  2. 84
  3. 4242
Ответ: 4242
                        str_num = input()  # Вводим 42
                        print(str_num * 2)
                        num = int(str_num)
                        print(str_num * 2)
                        print(bool(num))
                        print(bool(0))
                    
Что будет напечатано в результате выполнения этой строчке?
  1. 42
  2. 84
  3. 4242
Ответ: 84
                        str_num = input()  # Вводим 42
                        print(str_num * 2)
                        num = int(str_num)
                        print(str_num * 2)
                        print(bool(num))
                        print(bool(0))
                    
Чем является выделенный кусок кода?
  1. подключение модуля
  2. вызов функции
Ответ: вызов функици
                        str_num = input()  # Вводим 42
                        print(str_num * 2)
                        num = int(str_num)
                        print(str_num * 2)
                        print(bool(num))
                        print(bool(0))
                    
Чем является выделенный кусок кода?
  1. числовая переменное
  2. числовое значение
  3. логическое значение
Ответ: числовое значение

👏