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() # вызов функции
# Напечатается "Введите имя кошки", потом предложат ввести имя
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 - проверка наличия в словаре
# создаем объект с параметрами и записываем его в переменную
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 - свершилось
Типы алгоритмов
Последовательность
список шагов для выполнения
Встать
Почистить зубы
Сделать зарядку
Поесть
Условие
список шагов для выполнения
если дверь в ванную закрыта то
Открыть дверь
Почистить зубы
Цикл
повтор действий
для каждого зуба делать
Почистить поверхность
Почистить с внешней стороны
Почистить с внутренней стороны
Задача
Задача: Посчитать количество букв "а" в тексте
Определяем шаги
Прочитать текст
Пройтись по тексту
Найти буквы "а"
Вывести результат на экран
Задача: Посчитать количество букв "а" в тексте
Определяем тип каждого шага
Прочитать текст — функция
Пройтись по тексту — перебрать весь текст — цикл
Найти буквы "а" — если это буква "a", посчитать ее — условие
Вывести результат на экран — функция
Задача: Посчитать количество букв "а" в тексте
Переносим в код в виде комментариев
# Прочитать текст — функция# Перебрать весь текст — цикл# Если это буква "a", посчитать ее — условие# Вывести результат на экран — функция
Задача: Посчитать количество букв "а" в тексте
Читаем
text = input()# Перебрать весь текст — цикл# Если это буква "a", посчитать ее — условие# Вывести результат на экран — функция
Задача: Посчитать количество букв "а" в тексте
Пишем цикл
text = input()for symbol in text:# Если это буква "a", посчитать ее — условие# Вывести результат на экран — функция
Задача: Посчитать количество букв "а" в тексте
Условие — выполняется для каждого символа. Значит в цикле.
text = input()for symbol in text: if symbol == "a": # посчитать ее - считать надо в какую-то переменную# ...
Задача: Посчитать количество букв "а" в тексте
Создаем счетчик и считаем
text = input()counter = 0for symbol in text: if symbol == "a": counter += 1# ...
Задача: Посчитать количество букв "а" в тексте
text = input()counter = 0for symbol in text: if symbol == "a": counter += 1print(counter) # печатаем
Табы (отступы) — это важно
text = input()counter = 0for symbol in text:<tab>if symbol == "a":<tab><tab>counter += 1print(counter)
Табы (отступы) — блок "цикл"
text = input()counter = 0for symbol in text: if symbol == "a": counter += 1print(counter)
Табы (отступы) — блок "условие"
text = input()counter = 0for symbol in text: if symbol == "a": counter += 1print(counter)
Модули и импорты
Импорт — подключение готовых решений к файлу
import math # подключаем модуль math# использование: возводим 2 в степень 3pow = math.pow(2, 3)print(pow) # 8
Импорт — подключение готовых решений к файлу
import math as m # подключаем модуль math# ^ алиас - переименование модуля# использование: возводим 2 в степень 3pow = m.pow(2, 3)print(pow) # 8
Метод в модуле
import math as m # подключаем модуль math# использование: возводим 2 в степень 3pow = m.pow(2, 3)# ^^^ метод из модуляprint(pow) # 8# ^^^ переменная
Написание функции
Задача: написать функцию деления с остатком. Результаты должны печататься на экран
Определить функцию
Определить параметры
делимое int
делитель int
выводить ли остаток bool - необязательный
Задача: написать функцию деления с остатком. Результаты должны печататься на экран
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 = 25second = 4with_mod = Truedivide(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 = 25second = 4with_mod = Truedivide(first, second, with_mod)# Делим 25 на 4
# Результат 6
# Остаток 1
Области видимости
def divide(a, b, with_mod=False): # функция: first, second - тут не существует# глобальная: a, b - тут не существуетfirst = 25second = 4with_mod = Truedivide(first, second, with_mod)
Повтор
Ключевые слова:
if in for def return break continue...
Функции:
print() input() range() ...
Переменные — создаются разработчиком и называются по-разному:
text animal name num ...
Тест
def divide(a, b, with_mod=False): res = 1 while res * b < a: res += 1 # ... if with_mod: mod = a - res * b return resfirst = 25second = 4with_mod = Truedivide(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 resfirst = 25second = 4with_mod = Trueprint("with_mod")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 resfirst = 25second = 4with_mod = Trueprint("with_mod")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 resfirst = 25second = 4with_mod = Truedivide(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 resfirst = 25second = 4with_mod = Truedivide(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 resfirst = 25second = 4with_mod = Truedivide(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 resfirst = 25second = 4with_mod = Truedivide(first, second, with_mod)
Какое значение примет переменная a внутри функции?