ТЕОРИЯ И ПРАКТИКА
-
Ввод и вывод данных
- Задачи
-
Условия
- Задачи
-
Цикл for
- Задачи
-
Строки
- Задачи
-
Цикл while
- Задачи
-
Списки
- Задачи
-
Двумерные массивы
- Задачи
-
Словари
- Задачи
-
Множества
- Задачи
-
Функции и рекурсия
- Задачи
Занятие 1. Ввод и вывод данных
Типы данных в Python
Введение в типы данных в программировании
Представьте, что вы работаете с разными видами коробок. В одну коробку можно складывать только числа, в другую — только текст, в третью — только ответы "да" или "нет". В программировании такие "коробки" называются типами данных. Они определяют, какая информация может храниться в переменной и какие операции с ней можно выполнять.
Python — это язык с динамической типизацией, что означает, что тип переменной определяется автоматически в момент присвоения значения. Это делает Python очень удобным для изучения и использования.
Тип данных int в Python
Что такое int?
int (integer) — это тип данных для хранения целых чисел. Целые числа — это числа без дробной части: ..., -3, -2, -1, 0, 1, 2, 3, ...
В Python числа типа int могут быть сколь угодно большими (ограничены только объемом памяти компьютера)
Создание переменных типа int
# Создание целых чисел
возраст = 25
температура = -10
количество_яблок = 0
большое_число = 123456789012345678901234567890
print(возраст) # Выведет: 25
print(температура) # Выведет: -10
print(количество_яблок) # Выведет: 0
print(большое_число) # Выведет: 123456789012345678901234567890
Операции с int
# Арифметические операции
a = 10
b = 3
сложение = a + b # 13
вычитание = a - b # 7
умножение = a * b # 30
деление_нацело = a // b # 3 (целая часть от деления)
остаток = a % b # 1 (остаток от деления)
степень = a ** b # 1000 (10 в степени 3)
print(f"Сложение: {сложение}")
print(f"Вычитание: {вычитание}")
print(f"Умножение: {умножение}")
print(f"Деление нацело: {деление_нацело}")
print(f"Остаток от деления: {остаток}")
print(f"Возведение в степень: {степень}")
Тип данных float в Python
Что такое float?
float (floating point number) — это тип данных для хранения чисел с плавающей точкой (дробных чисел). Эти числа содержат дробную часть: 3.14, -0.5, 2.0, 1.23e-4.
Создание переменных типа float
# Создание чисел с плавающей точкой
цена = 19.99
температура = -5.5
пи = 3.14159
научная_запись = 1.5e3 # 1.5 * 10^3 = 1500.0
print(цена) # Выведет: 19.99
print(температура) # Выведет: -5.5
print(пи) # Выведет: 3.14159
print(научная_запись) # Выведет: 1500.0
Особенности работы с float
# Преобразование int в float
целое_число = 5
дробное_число = float(целое_число) # 5.0
print(f"Целое: {целое_число}, тип: {type(целое_число)}")
print(f"Дробное: {дробное_число}, тип: {type(дробное_число)}")
# Операции с float
a = 7.5
b = 2.3
результат_сложения = a + b # 9.8
результат_деления = a / b # 3.2608695652173911
округленный_результат = round(a / b, 2) # 3.26
print(f"Сложение: {результат_сложения}")
print(f"Деление: {результат_деления}")
print(f"Округленное деление: {округленный_результат}")
Тип данных str в Python
Что такое str?
str (string) — это тип данных для хранения текстовой информации (строк). Строка — это последовательность символов, заключенная в кавычки.
Создание строк
# Различные способы создания строк
имя = "Анна"
фамилия = 'Иванова'
многострочный_текст = """Это текст,
который занимает
несколько строк"""
# Пустая строка
пустая_строка = ""
print(имя) # Выведет: Анна
print(фамилия) # Выведет: Иванова
print(многострочный_текст)
print(f"Пустая строка: '{пустая_строка}'")
Основные операции со строками
# Конкатенация (сложение строк)
имя = "Петр"
фамилия = "Петров"
полное_имя = имя + " " + фамилия
print(полное_имя) # Выведет: Петр Петров
# Повторение строки
смех = "ха" * 3
print(смех) # Выведет: хахаха
# Длина строки
текст = "Привет, мир!"
длина = len(текст)
print(f"Длина строки '{текст}': {длина}") # Выведет: Длина строки 'Привет, мир!': 12
# Обращение к символам строки
первый_символ = текст[0] # 'П'
последний_символ = текст[-1] # '!'
print(f"Первый символ: {первый_символ}")
print(f"Последний символ: {последний_символ}")
Тип данных bool в Python
Что такое bool?
bool (boolean) — это тип данных для хранения логических значений. В Python есть только два булевых значения: True (истина) и False (ложь). Этот тип данных особенно важен для условных операторов и циклов
Создание булевых значений
# Прямое создание булевых значений
правда = True
ложь = False
print(правда) # Выведет: True
print(ложь) # Выведет: False
# Проверка типа
print(type(правда)) # Выведет: <class 'bool'<
print(type(ложь)) # Выведет: <class 'bool'<
Логические операции
# Логические операторы
a = True
b = False
# Логическое И (and)
результат_and = a and b # False
print(f"True and False = {результат_and}")
# Логическое ИЛИ (or)
результат_or = a or b # True
print(f"True or False = {результат_or}")
# Логическое НЕ (not)
результат_not_a = not a # False
результат_not_b = not b # True
print(f"not True = {результат_not_a}")
print(f"not False = {результат_not_b}")
Операции сравнения
# Операции сравнения всегда возвращают bool
число1 = 10
число2 = 20
равно = число1 == число2 # False
не_равно = число1 != число2 # True
больше = число1 > число2 # False
меньше = число1 < число2 # True
больше_или_равно = число1 >= число2 # False
меньше_или_равно = число1 <= число2 # True
print(f"10 == 20: {равно}")
print(f"10 != 20: {не_равно}")
print(f"10 > 20: {больше}")
print(f"10 < 20: {меньше}")
print(f"10 >= 20: {больше_или_равно}")
print(f"10 <= 20: {меньше_или_равно}")
Отличия типов данных в Python
Основные характеристики типов данных
Понимание различий между типами данных крайне важно для эффективного программирования. Каждый тип имеет свои особенности, возможности и ограничения.
Сравнительная таблица типов данных
| Тип данных | Примеры значений | Изменяемость | Основные операции | Вес (размер в байтах) |
|---|---|---|---|---|
| int | -5, 0, 42, 1000 | Неизменяемый | +, -, *, //, %, ** | От 28 байт, зависит от величины числа |
| float | -3.14, 0.0, 2.5 | Неизменяемый | +, -, *, /, ** | Обычно 24 байта (фиксированный размер) |
| str | "текст", 'слово' | Неизменяемый | +, *, len(), методы строк | От ~49 байт, зависит от длины строки |
| bool | True, False | Неизменяемый | and, or, not | Обычно 28 байт |
Примечание: Указанный вес является примерным для 64-битных систем. Размер целых чисел (int) и строк (str) не фиксирован и растет по мере увеличения их значения или длины.
Автоматическое определение типа
# Python автоматически определяет тип данных
переменная1 = 42 # int
переменная2 = 3.14 # float
переменная3 = "Привет" # str
переменная4 = True # bool
print(f"Тип {переменная1}: {type(переменная1)}")
print(f"Тип {переменная2}: {type(переменная2)}")
print(f"Тип {переменная3}: {type(переменная3)}")
print(f"Тип {переменная4}: {type(переменная4)}")
Особенности операций с разными типами
# Смешанные операции
целое = 10
дробное = 3.5
результат = целое + дробное # int + float = float
print(f"10 + 3.5 = {результат}, тип: {type(результат)}")
# Деление всегда возвращает float
результат_деления = 10 / 2 # Результат будет 5.0, а не 5
print(f"10 / 2 = {результат_деления}, тип: {type(результат_деления)}")
# Целочисленное деление
результат_целочисленного = 10 // 3 # Результат будет 3
print(f"10 // 3 = {результат_целочисленного}, тип: {type(результат_целочисленного)}")
Важные моменты при работе с типами данных
- Неизменяемость: Все рассмотренные типы данных (int, float, str, bool) являются неизменяемыми. Это означает, что вы не можете изменить существующий объект, но можете создать новый
- Автоматическое преобразование: Python автоматически преобразует типы в некоторых операциях (например, int + float = float).
- Проверка типов: Используйте функцию type() для определения типа переменной или isinstance() для проверки принадлежности к определенному типу.
- Осторожность с преобразованиями: Не все преобразования возможны (например, int("abc") вызовет ошибку).
2. Переменные Python
Введение в переменные в программировании
Представьте переменную как именованную коробку, в которую можно положить какое-то значение. В реальной жизни вы можете написать на коробке "Игрушки" и положить туда игрушки, или написать "Книги" и положить книги. В программировании переменная - это имя, которое ссылается на определенное значение в памяти компьютера.
Переменные позволяют нам сохранять данные, изменять их и использовать в разных частях программы. Это одна из самых важных концепций в программировании.
Объявление переменных
Что такое объявление переменной?
Объявление переменной - это процесс создания переменной и присвоения ей значения. В Python переменная создается в момент первого присвоения значения. Не нужно заранее указывать тип данных - Python определит его автоматически.
Синтаксис объявления переменных
# Базовый синтаксис: имя_переменной = значение
имя = "Иван"
возраст = 25
рост = 1.75
студент = True
print(имя) # Выведет: Иван
print(возраст) # Выведет: 25
print(рост) # Выведет: 1.75
print(студент) # Выведет: True
Множественное присваивание
# Присваивание нескольких значений одновременно
x, y, z = 1, 2, 3
print(f"x = {x}, y = {y}, z = {z}") # Выведет: x = 1, y = 2, z = 3
# Присваивание одного значения нескольким переменным
a = b = c = 10
print(f"a = {a}, b = {b}, c = {c}") # Выведет: a = 10, b = 10, c = 10
# Обмен значениями переменных
первое_число = 100
второе_число = 200
print(f"До обмена: первое = {первое_число}, второе = {второе_число}")
# Обмен значениями (элегантный способ в Python)
первое_число, второе_число = второе_число, первое_число
print(f"После обмена: первое = {первое_число}, второе = {второе_число}")
Переопределение переменных
# Переменные можно переопределять
счетчик = 0
print(f"Начальное значение: {счетчик}")
счетчик = 5
print(f"Новое значение: {счетчик}")
счетчик = счетчик + 1 # Увеличиваем на 1
print(f"Увеличенное значение: {счетчик}")
# Сокращенная запись для арифметических операций
счетчик += 10 # Эквивалентно: счетчик = счетчик + 10
print(f"После добавления 10: {счетчик}")
счетчик *= 2 # Эквивалентно: счетчик = счетчик * 2
print(f"После умножения на 2: {счетчик}")
Правила именования переменных
Основные правила именования переменных в программировании
В Python существуют строгие правила именования переменных, которые должны соблюдаться обязательно, и рекомендации по стилю, которые делают код более читаемым.
Обязательные правила
# ПРАВИЛЬНЫЕ имена переменных:
имя = "Петр"
age = 25
user_name = "ivan_petrov"
количество_товаров = 10
price2 = 100.0
_private_var = "секретное значение"
# НЕПРАВИЛЬНЫЕ имена переменных (вызовут ошибку):
# 2price = 100.0 # Нельзя начинать с цифры
# user-name = "ivan" # Нельзя использовать дефис
# class = "математика" # Нельзя использовать зарезервированные слова
# user name = "ivan" # Нельзя использовать пробелы
Зарезервированные слова
Это зарезервированные слова Python, их нельзя использовать как имена переменных
import keyword
зарезервированные_слова = keyword.kwlist
print("Зарезервированные слова Python:")
for слово in зарезервированные_слова:
print(слово)
# Примеры того, чего делать НЕЛЬЗЯ:
# if = 5 # Ошибка!
# for = "text" # Ошибка!
# def = 10 # Ошибка!
# Правильные альтернативы:
условие = 5
цикл = "text"
определение = 10
Соглашения по стилю (PEP 8)
# Используйте snake_case для переменных (слова разделяются подчеркиванием)
имя_пользователя = "Анна"
максимальная_скорость = 120
количество_попыток = 3
# Используйте описательные имена
# ПЛОХО:
x = 3.14159
n = "Иван"
d = 1000
# ХОРОШО:
число_пи = 3.14159
имя_студента = "Иван"
дневная_зарплата = 1000
# Константы пишите ЗАГЛАВНЫМИ_БУКВАМИ
МАКСИМАЛЬНАЯ_СКОРОСТЬ = 120
КОЛИЧЕСТВО_СЕКУНД_В_МИНУТЕ = 60
НАЗВАНИЕ_КОМПАНИИ = "ТехноСофт"
# Избегайте однобуквенных имен (кроме счетчиков в коротких циклах)
# ПЛОХО:
a = 100
b = 200
c = a + b
# ХОРОШО:
цена_товара = 100
количество = 200
общая_стоимость = цена_товара + количество
Динамическая типизация
Что такое динамическая типизация?
Динамическая типизация означает, что в Python тип переменной определяется во время выполнения программы, а не во время написания кода. Переменная может менять свой тип в процессе выполнения программы.
Отличие от статической типизации
# В Python (динамическая типизация):
переменная = 42 # Сейчас это int
print(f"Значение: {переменная}, тип: {type(переменная)}")
переменная = "Привет" # Теперь это str
print(f"Значение: {переменная}, тип: {type(переменная)}")
переменная = 3.14 # Теперь это float
print(f"Значение: {переменная}, тип: {type(переменная)}")
переменная = True # Теперь это bool
print(f"Значение: {переменная}, тип: {type(переменная)}")
# В языках со статической типизацией (например, C++, Java)
# нужно заранее объявить тип:
# int переменная = 42; // Всегда будет int
# string другая = "Привет"; // Всегда будет string
Преимущества динамической типизации
# Гибкость в использовании
def обработать_данные(данные):
"""Функция может работать с разными типами данных"""
if isinstance(данные, int):
return данные * 2
elif isinstance(данные, str):
return данные.upper()
elif isinstance(данные, list):
return len(данные)
else:
return f"Неизвестный тип: {type(данные)}"
# Тестируем с разными типами
результат1 = обработать_данные(10) # int
результат2 = обработать_данные("привет") # str
результат3 = обработать_данные([1, 2, 3]) # list
print(f"Результат 1: {результат1}") # Выведет: 20
print(f"Результат 2: {результат2}") # Выведет: ПРИВЕТ
print(f"Результат 3: {результат3}") # Выведет: 3
Потенциальные проблемы
Проблема 1: Неожиданное изменение типа
счетчик = 0
print(f"Начальное значение: {счетчик}, тип: {type(счетчик)}")
# Где-то в коде...
счетчик = "ноль" # Случайно присвоили строку
print(f"Новое значение: {счетчик}, тип: {type(счетчик)}")
# Попытка математической операции вызовет ошибку
try:
счетчик += 1
except TypeError as e:
print(f"Ошибка: {e}")
Проблема 2: Неявное преобразование типов
число1 = 10
число2 = "20"
# Это вызовет ошибку
try:
результат = число1 + число2
except TypeError as e:
print(f"Ошибка сложения: {e}")
# Правильный способ
результат = число1 + int(число2)
print(f"Правильный результат: {результат}")
Функция определения типа
Основные функции для работы с типами
Python предоставляет несколько встроенных функций для определения и проверки типов данных. Это особенно важно при работе с динамической типизацией.
Функция type()
# Функция type() возвращает точный тип объекта
число = 42
дробь = 3.14
строка = "Привет"
логическое = True
список = [1, 2, 3]
print(f"type(42): {type(число)}")
print(f"type(3.14): {type(дробь)}")
print(f"type('Привет'): {type(строка)}")
print(f"type(True): {type(логическое)}")
print(f"type([1, 2, 3]): {type(список)}")
# Получение имени типа как строки
print(f"Имя типа: {type(число).__name__}")
print(f"Имя типа: {type(строка).__name__}")
Функция isinstance()
# isinstance() проверяет, является ли объект экземпляром определенного типа
переменная = 100
# Проверка одного типа
print(f"isinstance(100, int): {isinstance(переменная, int)}")
print(f"isinstance(100, str): {isinstance(переменная, str)}")
# Проверка нескольких типов одновременно
print(f"isinstance(100, (int, float)): {isinstance(переменная, (int, float))}")
# Практическое использование
def безопасное_деление(a, b):
"""Безопасное деление с проверкой типов"""
if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
return "Ошибка: оба аргумента должны быть числами"
if b == 0:
return "Ошибка: деление на ноль"
return a / b
# Тестируем функцию
print(безопасное_деление(10, 2)) # 5.0
print(безопасное_деление(10, 0)) # Ошибка: деление на ноль
print(безопасное_деление(10, "2")) # Ошибка: оба аргумента должны быть числами
Понимание работы с типами данных и переменными в Python является фундаментальным для написания качественного кода. Динамическая типизация делает Python гибким и удобным, но требует внимательности при работе с данными разных типов.
Преобразования типов в питоне
Введение в преобразования типов в программировании
Представьте, что у вас есть разные формы для одной и той же информации: число 42 можно записать как целое число 42, как дробь 42.0, как строку "42" или даже как логическое значение True (поскольку любое ненулевое число считается истиной). Преобразование типов - это процесс изменения типа данных переменной с одного на другой.
В Python существует два вида преобразований:
- Явное преобразование (explicit conversion) - когда программист сам указывает, во что нужно преобразовать данные
- Неявное преобразование (implicit conversion) - когда Python автоматически преобразует типы при выполнении операций
Явное преобразование
Что такое явное преобразование?
Явное преобразование - это когда мы сами указываем Python, в какой тип нужно преобразовать данные, используя специальные функции: int(), float(), str(), bool().
При явном преобразовании мы используем функции: int(), float(), str(), bool()
Преобразование целого числа в дробь, строку или логический тип данных
Преобразование int в float
# Преобразование целого числа в дробное
число = 5
дробь = float(число)
print(f"Целое число: {число}") # 5
print(f"Дробное число: {дробь}") # 5.0
print(f"Тип: {type(дробь)}") # <class 'float'>
Преобразование int в str
# Преобразование целого числа в строку
возраст = 25
возраст_строка = str(возраст)
print(f"Число: {возраст}") # 25
print(f"Строка: '{возраст_строка}'") # '25'
print(f"Тип: {type(возраст_строка)}") # <class 'str'>
# Использование в тексте
сообщение = "Мне " + str(возраст) + " лет"
print(сообщение) # Мне 25 лет
Преобразование int в bool
# Преобразование целого числа в логическое значение
print(f"bool(0) = {bool(0)}") # False
print(f"bool(1) = {bool(1)}") # True
print(f"bool(-5) = {bool(-5)}") # True
print(f"bool(100) = {bool(100)}") # True
# Правило: 0 = False, любое другое число = True
Преобразование переменных типа float в int, str, bool
Преобразование float в int
# Преобразование дробного числа в целое
цена = 99.99
цена_целая = int(цена)
print(f"Дробь: {цена}") # 99.99
print(f"Целое: {цена_целая}") # 99
# Внимание! Дробная часть просто отбрасывается
print(f"int(3.7) = {int(3.7)}") # 3
print(f"int(-2.9) = {int(-2.9)}") # -2
Преобразование float в str
# Преобразование дробного числа в строку
температура = 36.6
температура_строка = str(температура)
print(f"Число: {температура}")
print(f"Строка: '{температура_строка}'")
print(f"Тип: {type(температура_строка)}")
# Использование в тексте
сообщение = "Температура " + str(температура) + " градусов"
print(сообщение)
Преобразование float в bool
# Преобразование дробного числа в логическое значение
print(f"bool(0.0) = {bool(0.0)}") # False
print(f"bool(1.5) = {bool(1.5)}") # True
print(f"bool(-0.1) = {bool(-0.1)}") # True
# Правило: 0.0 = False, любое другое число = True
Преобразование строки в целые числа, дробные числа и в булевую переменную
Преобразование str в int
# Преобразование строки в целое число
возраст_строка = "25"
возраст = int(возраст_строка)
print(f"Строка: '{возраст_строка}'")
print(f"Число: {возраст}")
print(f"Тип: {type(возраст)}")
# Ошибки преобразования
try:
число = int("abc") # Ошибка!
except ValueError:
print("Ошибка: нельзя преобразовать 'abc' в число")
Преобразование str в float
# Преобразование строки в дробное число
цена_строка = "99.99"
цена = float(цена_строка)
print(f"Строка: '{цена_строка}'")
print(f"Дробь: {цена}")
print(f"Тип: {type(цена)}")
# Можно преобразовать и целые числа
целое_как_строка = "42"
дробь = float(целое_как_строка)
print(f"'{целое_как_строка}' -> {дробь}") # 42.0
Преобразование str в bool
# Преобразование строки в логическое значение
print(f"bool('') = {bool('')}") # False (пустая строка)
print(f"bool('привет') = {bool('привет')}") # True
print(f"bool('0') = {bool('0')}") # True (строка не пустая!)
print(f"bool('False') = {bool('False')}") # True
Правило: только пустая строка = False, любая другая = True
Преобразование булевых переменных в строки, дробь и целые числа
Преобразование bool в str
# Преобразование логического значения в строку
активен = True
неактивен = False
print(f"str(True) = '{str(активен)}'") # 'True'
print(f"str(False) = '{str(неактивен)}'") # 'False'
# Использование в тексте
статус = "Пользователь " + str(активен)
print(статус) # Пользователь True
Преобразование bool в int
# Преобразование логического значения в целое число
print(f"int(True) = {int(True)}") # 1
print(f"int(False) = {int(False)}") # 0
# Практическое применение - подсчет
результаты = [True, False, True, True, False]
правильных = sum(результаты) # True считается как 1
print(f"Правильных ответов: {правильных}") # 3
Преобразование bool в float
# Преобразование логического значения в дробное число
print(f"float(True) = {float(True)}") # 1.0
print(f"float(False) = {float(False)}") # 0.0
Неявное преобразование типов в питоне
Неявное преобразование происходит автоматически, когда Python выполняет операции с разными типами данных.
Арифметические операции
# int + float = float
целое = 10
дробное = 3.5
результат = целое + дробное
print(f"{целое} + {дробное} = {результат}") # 10 + 3.5 = 13.5
print(f"Тип результата: {type(результат)}") # <class 'float'>
# Деление всегда дает float
деление = 10 / 2
print(f"10 / 2 = {деление}") # 5.0 (не 5!)
print(f"Тип: {type(деление)}") # <class 'float'>
Операции с bool
# bool участвует в арифметических операциях как число
print(f"True + 5 = {True + 5}") # 6 (True = 1)
print(f"False * 10 = {False * 10}") # 0 (False = 0)
print(f"True + False = {True + False}") # 1 (1 + 0)
Строки и числа
# Строки НЕ преобразуются автоматически!
try:
результат = "5" + 3 # Ошибка!
except TypeError:
print("Ошибка: нельзя складывать строку и число")
# Правильный способ
число_строка = "5"
число = 3
результат = int(число_строка) + число # Сначала преобразуем
print(f"Правильно: {результат}") # 8
Сравнения
# Сравнение разных числовых типов
print(f"5 == 5.0: {5 == 5.0}") # True
print(f"1 == True: {1 == True}") # True
print(f"0 == False: {0 == False}") # True
# Но типы разные!
print(f"type(5): {type(5)}") # <class 'int'>
print(f"type(5.0): {type(5.0)}") # <class 'float'>
Важные правила
- int + float = float — при операциях с целыми и дробными числами результат всегда дробный
- Деление всегда дает float — даже если числа нацело делятся
- bool = число — True = 1, False = 0 в арифметических операциях
- Строки НЕ преобразуются автоматически — нужно делать это явно
- Сравнения работают между числовыми типами — но типы остаются разными
Математические операции в питоне
Существующие математические операции
Математические операции - это действия, которые можно выполнять с числами. Python поддерживает все основные математические операции, которые мы используем в повседневной жизни, плюс несколько специальных.
Базовые арифметические операции в Python
Основные операторы
Python поддерживает пять основных арифметических операций:
Сложение ( + )
# Сложение чисел
a = 10
b = 5
результат = a + b
print(f"{a} + {b} = {результат}") # 10 + 5 = 15
# Сложение с разными типами
целое = 7
дробное = 2.5
сумма = целое + дробное
print(f"{целое} + {дробное} = {сумма}") # 7 + 2.5 = 9.5
Вычитание ( - )
# Вычитание чисел
a = 20
b = 8
разность = a - b
print(f"{a} - {b} = {разность}") # 20 - 8 = 12
# Отрицательные числа
результат = 5 - 10
print(f"5 - 10 = {результат}") # 5 - 10 = -5
Умножение ( * )
# Умножение чисел
a = 6
b = 7
произведение = a * b
print(f"{a} * {b} = {произведение}") # 6 * 7 = 42
# Умножение с дробными числами
цена = 15.5
количество = 3
общая_стоимость = цена * количество
print(f"Цена {цена} * {количество} = {общая_стоимость}") # 46.5
Деление ( / )
# Обычное деление
a = 15
b = 3
частное = a / b
print(f"{a} / {b} = {частное}") # 15 / 3 = 5.0
# Деление всегда дает float
результат = 10 / 2
print(f"10 / 2 = {результат}") # 10 / 2 = 5.0 (не 5!)
print(f"Тип: {type(результат)}") # <class 'float'>
# Деление с остатком
print(f"7 / 2 = {7 / 2}") # 7 / 2 = 3.5
Специальные операторы в питоне
Введение в специальные операторы
Кроме основных операций, Python имеет три специальных оператора для работы с числами.
// целочисленное деление
Что такое целочисленное деление?
Целочисленное деление (//) — это деление, которое возвращает только целую часть результата, отбрасывая дробную часть.
# Целочисленное деление
print(f"7 // 2 = {7 // 2}") # 7 // 2 = 3
print(f"15 // 4 = {15 // 4}") # 15 // 4 = 3
print(f"20 // 6 = {20 // 6}") # 20 // 6 = 3
# Сравнение с обычным делением
print(f"7 / 2 = {7 / 2}") # 7 / 2 = 3.5
print(f"7 // 2 = {7 // 2}") # 7 // 2 = 3
Работа с отрицательными числами
# Целочисленное деление с отрицательными числами
print(f"-7 // 2 = {-7 // 2}") # -7 // 2 = -4
print(f"7 // -2 = {7 // -2}") # 7 // -2 = -4
print(f"-7 // -2 = {-7 // -2}") # -7 // -2 = 3
# Округление идет к меньшему целому числу
print(f"-7 / 2 = {-7 / 2}") # -7 / 2 = -3.5
print(f"-7 // 2 = {-7 // 2}") # -7 // 2 = -4
% остаток от деления
Что такое остаток от деления?
Остаток от деления (%) — это то, что остается после целочисленного деления.
# Остаток от деления
print(f"7 % 2 = {7 % 2}") # 7 % 2 = 1
print(f"15 % 4 = {15 % 4}") # 15 % 4 = 3
print(f"20 % 6 = {20 % 6}") # 20 % 6 = 2
# Если число делится нацело, остаток равен 0
print(f"10 % 5 = {10 % 5}") # 10 % 5 = 0
print(f"8 % 2 = {8 % 2}") # 8 % 2 = 0
Связь с целочисленным делением
# Проверим связь // и %
число = 17
делитель = 5
частное = число // делитель
остаток = число % делитель
print(f"{число} = {делитель} * {частное} + {остаток}")
print(f"17 = 5 * 3 + 2") # Проверка: 5 * 3 + 2 = 17
** возведение в степень в Python
Что такое возведение в степень?
Возведение в степень (**) — это умножение числа на само себя определенное количество раз.
# Возведение в степень
print(f"2 ** 3 = {2 ** 3}") # 2 ** 3 = 8 (2 * 2 * 2)
print(f"5 ** 2 = {5 ** 2}") # 5 ** 2 = 25 (5 * 5)
print(f"10 ** 4 = {10 ** 4}") # 10 ** 4 = 10000
# Степень может быть дробной
print(f"9 ** 0.5 = {9 ** 0.5}") # 9 ** 0.5 = 3.0 (квадратный корень)
print(f"8 ** (1/3) = {8 ** (1/3)}") # 8 ** (1/3) = 2.0 (кубический корень)
Особые случаи
# Возведение в степень 0
print(f"5 ** 0 = {5 ** 0}") # 5 ** 0 = 1
print(f"100 ** 0 = {100 ** 0}") # 100 ** 0 = 1
# Возведение в степень 1
print(f"7 ** 1 = {7 ** 1}") # 7 ** 1 = 7
# Отрицательные степени
print(f"2 ** -3 = {2 ** -3}") # 2 ** -3 = 0.125 (1/8)
print(f"10 ** -2 = {10 ** -2}") # 10 ** -2 = 0.01 (1/100)
Приоритет арифметических операций в питоне
Порядок выполнения операций в программировании
Python выполняет математические операции в определенном порядке, как в обычной математике:
- Скобки
()— самый высокий приоритет **Возведение в степень*Умножение, деление/, целочисленное деление//, остаток%+Сложение,-Вычитание — самый низкий приоритет
Примеры приоритета
# Без скобок
результат1 = 2 + 3 * 4
print(f"2 + 3 * 4 = {результат1}") # 2 + 3 * 4 = 14 (не 20!)
# Со скобками
результат2 = (2 + 3) * 4
print(f"(2 + 3) * 4 = {результат2}") # (2 + 3) * 4 = 20
# Степень выполняется первой
результат3 = 2 + 3 ** 2
print(f"2 + 3 ** 2 = {результат3}") # 2 + 3 ** 2 = 11 (не 25!)
# Со скобками
результат4 = (2 + 3) ** 2
print(f"(2 + 3) ** 2 = {результат4}") # (2 + 3) ** 2 = 25
Операции одинакового приоритета
# Умножение и деление выполняются слева направо
результат1 = 12 / 3 * 2
print(f"12 / 3 * 2 = {результат1}") # 12 / 3 * 2 = 8.0
# Это равно: (12 / 3) * 2 = 4 * 2 = 8
# А НЕ: 12 / (3 * 2) = 12 / 6 = 2
# Сложение и вычитание тоже слева направо
результат2 = 10 - 3 + 2
print(f"10 - 3 + 2 = {результат2}") # 10 - 3 + 2 = 9
Сложные примеры
# Сложное выражение
выражение = 2 + 3 * 4 ** 2 - 5 / 2
print(f"2 + 3 * 4 ** 2 - 5 / 2 = {выражение}")
# Разберем по шагам:
# 1. 4 ** 2 = 16
# 2. 3 * 16 = 48
# 3. 5 / 2 = 2.5
# 4. 2 + 48 = 50
# 5. 50 - 2.5 = 47.5
# Проверим по шагам
шаг1 = 4 ** 2 # 16
шаг2 = 3 * шаг1 # 48
шаг3 = 5 / 2 # 2.5
шаг4 = 2 + шаг2 # 50
шаг5 = шаг4 - шаг3 # 47.5
print(f"Результат по шагам: {шаг5}")
Советы для запоминания
- Всегда используйте скобки для ясности, даже если они не нужны
- Помните аббревиатуру: скобки → степень → умножение/деление
- При сомнении — добавьте скобки
- Разбивайте сложные выражения на простые части
# Хорошая практика - использование скобок для ясности
сложное_выражение = ((2 + 3) * 4) - (5 / 2)
print(f"Ясное выражение: {сложное_выражение}")
# Разбивка на части
часть1 = (2 + 3) * 4
часть2 = 5 / 2
результат = часть1 - часть2
print(f"По частям: {результат}")
Функция вывода и форматирование данных в Python print
функция вывода print
Функция print() - это основной способ вывода информации на экран в Python. Она позволяет показать результаты работы программы пользователю.
Функция вывода print
Базовое использование
# Простой вывод
print("Привет, мир!")
# Вывод переменных
имя = "Анна"
возраст = 25
print(имя)
print(возраст)
Вывод нескольких значений
Вывод нескольких элементов сразу
# Вывод нескольких значений через запятую
имя = "Петр"
возраст = 30
город = "Москва"
print(имя, возраст, город)
# Выведет: Петр 30 Москва
# Вывод разных типов данных
число = 42
дробь = 3.14
логическое = True
print(число, дробь, логическое)
# Выведет: 42 3.14 True
Смешивание текста и переменных
# Комбинирование текста и переменных
имя = "Мария"
возраст = 22
print("Имя:", имя, "Возраст:", возраст)
# Выведет: Имя: Мария Возраст: 22
# Вывод результатов вычислений
a = 10
b = 5
print("Сумма:", a, "+", b, "=", a + b)
# Выведет: Сумма: 10 + 5 = 15
Параметры sep и end
Параметр sep (разделитель)
sep — это параметр, который определяет, что печатается между элементами.
# По умолчанию разделитель - пробел
print("a", "b", "c")
# Выведет: a b c
# Изменяем разделитель на запятую
print("a", "b", "c", sep=",")
# Выведет: a,b,c
# Разделитель - дефис
print("a", "b", "c", sep="-")
# Выведет: a-b-c
# Разделитель - пустая строка
print("a", "b", "c", sep="")
# Выведет: abc
Практические примеры sep
# Создание CSV-строки
имя = "Иван"
фамилия = "Петров"
возраст = 28
print(имя, фамилия, возраст, sep=",")
# Выведет: Иван,Петров,28
# Создание пути к файлу
папка = "документы"
подпапка = "проекты"
файл = "отчет.txt"
print(папка, подпапка, файл, sep="/")
# Выведет: документы/проекты/отчет.txt
Параметр end (окончание)
end — это параметр, который определяет, что печатается в конце строки.
# По умолчанию в конце - перевод строки
print("Первая строка")
print("Вторая строка")
# Выведет:
# Первая строка
# Вторая строка
# Изменяем окончание на пробел
print("Первая строка", end=" ")
print("Вторая строка")
# Выведет: Первая строка Вторая строка
# Окончание - точка
print("Предложение", end=".")
print(" Следующее предложение")
# Выведет: Предложение. Следующее предложение
Практические примеры end
# Создание строки без переносов
print("Загрузка", end="")
print(".", end="")
print(".", end="")
print(".", end="")
print(" Готово!")
# Выведет: Загрузка... Готово!
# Вывод чисел в одну строку
числа = [1, 2, 3, 4, 5]
for число in числа:
print(число, end=" ")
print() # Перенос строки в конце
# Выведет: 1 2 3 4 5
Комбинирование sep и end
# Используем оба параметра
print("a", "b", "c", sep="-", end="!\n")
# Выведет: a-b-c!
# Создание таблицы
print("Имя", "Возраст", "Город", sep=" | ", end="\n")
print("Анна", "25", "Москва", sep=" | ", end="\n")
print("Петр", "30", "СПб", sep=" | ", end="\n")
# Выведет:
# Имя | Возраст | Город
# Анна | 25 | Москва
# Петр | 30 | СПб
Форматированный вывод данных в Python
Введение в форматирование
Форматирование — это способ красиво и точно представить данные в тексте. В Python есть три основных способа форматирования.
f-строки в Python
Что такое f-строки?
f-строки (f-strings) — это современный и удобный способ форматирования строк в Python.
Они
начинаются с буквы f перед кавычками.
# Основное использование f-строк
имя = "Алексей"
возраст = 27
# Вставляем переменные в фигурные скобки
сообщение = f"Меня зовут {имя}, мне {возраст} лет"
print(сообщение)
# Выведет: Меня зовут Алексей, мне 27 лет
Вычисления в f-строках
# Можно выполнять вычисления прямо в строке
a = 10
b = 5
print(f"{a} + {b} = {a + b}")
# Выведет: 10 + 5 = 15
print(f"{a} * {b} = {a * b}")
# Выведет: 10 * 5 = 50
# Работа с более сложными выражениями
цена = 100
количество = 3
скидка = 0.1
print(f"Общая стоимость: {цена * количество * (1 - скидка)}")
# Выведет: Общая стоимость: 270.0
Форматирование чисел
# Округление дробных чисел
число = 3.14159
print(f"Число: {число:.2f}") # 2 знака после запятой
# Выведет: Число: 3.14
print(f"Число: {число:.0f}") # Без дробной части
# Выведет: Число: 3
# Форматирование больших чисел
большое_число = 1234567
print(f"Число: {большое_число:,}") # С разделителями
# Выведет: Число: 1,234,567
Простые примеры f-строк
# Информация о студенте
имя = "Елена"
группа = "ИТ-21"
средний_балл = 4.75
print(f"Студент: {имя}")
print(f"Группа: {группа}")
print(f"Средний балл: {средний_балл:.1f}")
# Выведет:
# Студент: Елена
# Группа: ИТ-21
# Средний балл: 4.8
Функция format()
Основы format()
format() — это метод строки, который позволяет вставлять значения в
определенные
места.
# Основное использование format()
имя = "Дмитрий"
возраст = 33
# Фигурные скобки {} — это места для вставки
сообщение = "Меня зовут {}, мне {} лет".format(имя, возраст)
print(сообщение)
# Выведет: Меня зовут Дмитрий, мне 33 лет
Нумерация позиций
# Можно указывать номера позиций
print("Первое: {0}, второе: {1}".format("А", "Б"))
# Выведет: Первое: А, второе: Б
# Можно менять порядок
print("Второе: {1}, первое: {0}".format("А", "Б"))
# Выведет: Второе: Б, первое: А
# Можно повторять
print("{0} + {0} = {1}".format(5, 10))
# Выведет: 5 + 5 = 10
Именованные параметры
# Использование имен вместо позиций
print("Имя: {name}, возраст: {age}".format(name="Ольга", age=29))
# Выведет: Имя: Ольга, возраст: 29
# Можно менять порядок
print("Возраст: {age}, имя: {name}".format(name="Ольга", age=29))
# Выведет: Возраст: 29, имя: Ольга
Форматирование с format()
# Округление чисел
число = 3.14159
print("Число: {:.2f}".format(число))
# Выведет: Число: 3.14
print("Число: {:.0f}".format(число))
# Выведет: Число: 3
# С именованными параметрами
print("Цена: {price:.2f} руб.".format(price=199.99))
# Выведет: Цена: 199.99 руб.
Простые примеры format()
# Информация о покупке
товар = "Молоко"
цена = 55.50
количество = 2
сообщение = "Товар: {}, цена: {:.2f}, количество: {}, итого: {:.2f}".format(
товар, цена, количество, цена * количество)
print(сообщение)
# Выведет: Товар: Молоко, цена: 55.50, количество: 2, итого: 111.00
% форматирование данных
Основы % форматирования
% форматирование — это старый способ форматирования строк в Python, похожий на язык C.
# Основное использование % форматирования
имя = "Сергей"
возраст = 31
# %s — для строк, %d — для целых чисел
сообщение = "Меня зовут %s, мне %d лет" % (имя, возраст)
print(сообщение)
# Выведет: Меня зовут Сергей, мне 31 лет
Основные спецификаторы
# %s — строка
print("Имя: %s" % "Анна")
# %d — целое число
print("Возраст: %d" % 25)
# %f — дробное число
print("Цена: %f" % 99.99)
# %% — символ %
print("Скидка: %d%%" % 15)
# Выведет: Скидка: 15%
Форматирование дробных чисел
# Указание количества знаков после запятой
число = 3.14159
print("Число: %.2f" % число) # 2 знака
# Выведет: Число: 3.14
print("Число: %.0f" % число) # Без дробной части
# Выведет: Число: 3
# Указание общей ширины
print("Число: %10.2f" % число) # 10 символов всего, 2 после запятой
# Выведет: Число: 3.14
Простые примеры % форматирования
# Отчет о продажах
продавец = "Иванов"
продаж = 15
выручка = 45000.50
отчет = "Продавец: %s, продаж: %d, выручка: %.2f руб." % (продавец, продаж, выручка)
print(отчет)
# Выведет: Продавец: Иванов, продаж: 15, выручка: 45000.50 руб.
Сравнение всех способов форматирования
# Одна и та же информация тремя способами
имя = "Мария"
возраст = 28
зарплата = 50000.75
# f-строки (современный способ)
print(f"Сотрудник: {имя}, возраст: {возраст}, зарплата: {зарплата:.2f}")
# format() (универсальный способ)
print("Сотрудник: {}, возраст: {}, зарплата: {:.2f}".format(имя, возраст, зарплата))
# % форматирование (старый способ)
print("Сотрудник: %s, возраст: %d, зарплата: %.2f" % (имя, возраст, зарплата))
# Все три выведут одинаково:
# Сотрудник: Мария, возраст: 28, зарплата: 50000.75
Какой способ форматирования выбрать?
1. f-строки — лучший выбор для современного Python (быстрые и читаемые)
2. format() — хорош для сложного форматирования и старых версий Python
3. % форматирование — используется редко, в основном в старом коде
# Рекомендуется использовать f-строки
имя = "Алексей"
возраст = 25
# Хорошо
print(f"Привет, {имя}! Тебе {возраст} лет.")
# Тоже нормально
print("Привет, {}! Тебе {} лет.".format(имя, возраст))
# Старый стиль (не рекомендуется)
print("Привет, %s! Тебе %d лет." % (имя, возраст))
Ввод данных с input() в питоне
Ввод данных в языках программирования
Функция input() — это основной способ получения данных от пользователя в
Python.
Она позволяет программе взаимодействовать с человеком, запрашивая у него информацию.
Функция ввода input()
Основы работы с input()
Функция input() останавливает выполнение программы и ждет, пока пользователь
введет данные и нажмет Enter.
# Простое использование input()
имя = input()
print("Привет,", имя)
# Если пользователь введет "Анна", выведется:
# Привет, Анна
Что возвращает input()
Важно: input() всегда возвращает строку (str), независимо от
того,
что ввел пользователь.
# Получаем данные от пользователя
данные = input()
print("Вы ввели:", данные)
print("Тип данных:", type(данные))
# Даже если пользователь введет число 25, получим:
# Вы ввели: 25
# Тип данных: <class 'str'>
Преобразование вводимых данных с помощью функций int, float, bool
Проблема с типами данных
# Проблема: нельзя сразу считать как число
возраст = input() # Пользователь вводит "25"
через_год = возраст + 1 # Ошибка! Нельзя сложить строку и число
# TypeError: can only concatenate str (not "int") to str
Преобразование в int
# Правильное преобразование в целое число
возраст_строка = input()
возраст = int(возраст_строка)
через_год = возраст + 1
print("Через год вам будет:", через_год)
# Можно делать в одну строку
возраст = int(input())
print("Ваш возраст:", возраст)
Преобразование в float
# Преобразование в дробное число
рост_строка = input()
рост = float(рост_строка)
print("Ваш рост:", рост, "см")
# В одну строку
вес = float(input())
индекс_массы = вес / (рост / 100) ** 2
print("Ваш ИМТ:", индекс_массы)
Преобразование в bool
# Преобразование в логическое значение
ответ = input() # Пользователь вводит что-то
логическое = bool(ответ)
print("Ваш ответ:", ответ)
print("Как bool:", логическое)
# Помните: только пустая строка даст False
# Любая непустая строка (даже "false") даст True
Умное преобразование в bool
# Более умное преобразование
ответ = input()
ответ_нижний = ответ.lower()
if ответ_нижний in ["да", "yes", "true", "1"]:
результат = True
elif ответ_нижний in ["нет", "no", "false", "0"]:
результат = False
else:
результат = bool(ответ) # Стандартное преобразование
print("Результат:", результат)
Обработка числового ввода
Проблемы с преобразованием
# Что произойдет, если пользователь введет не число?
try:
число = int(input())
print("Вы ввели число:", число)
except ValueError:
print("Это не число!")
Безопасный ввод числа
# Функция для безопасного ввода целого числа
def получить_целое_число():
while True:
try:
число = int(input())
return число
except ValueError:
print("Ошибка! Введите целое число:")
# Использование
возраст = получить_целое_число()
print("Ваш возраст:", возраст)
Безопасный ввод дробного числа
# Функция для безопасного ввода дробного числа
def получить_дробное_число():
while True:
try:
число = float(input())
return число
except ValueError:
print("Ошибка! Введите число:")
# Использование
рост = получить_дробное_число()
print("Ваш рост:", рост)
Ввод с проверкой диапазона
# Ввод числа в определенном диапазоне
def получить_число_в_диапазоне(минимум, максимум):
while True:
try:
число = int(input())
if минимум <= число <= максимум:
return число
else:
print(f"Число должно быть от {минимум} до {максимум}")
except ValueError:
print("Ошибка! Введите целое число:")
# Использование
print("Введите возраст от 0 до 120:")
возраст = получить_число_в_диапазоне(0, 120)
print("Ваш возраст:", возраст)
Аргумент функции input
Параметр prompt
Функция input() может принимать один аргумент - prompt (приглашение для ввода).
# Без приглашения
имя = input()
# С приглашением
имя = input("Введите ваше имя: ")
Использование prompt
# Примеры с приглашениями
имя = input("Как вас зовут? ")
возраст = input("Сколько вам лет? ")
город = input("Где вы живете? ")
print("Привет,", имя)
print("Вам", возраст, "лет")
print("Вы из города", город)
Красивые приглашения
# Красивое оформление приглашений
print("=== РЕГИСТРАЦИЯ ===")
имя = input("Введите ваше имя: ")
фамилия = input("Введите вашу фамилию: ")
email = input("Введите ваш email: ")
print(f"\nДобро пожаловать, {имя} {фамилия}!")
print(f"Ваш email: {email}")
Многострочные приглашения
# Длинные приглашения
приглашение = """Добро пожаловать в программу!
Введите ваше имя: """
имя = input(приглашение)
print(f"Привет, {имя}!")
Приглашения с форматированием
# Приглашения с дополнительной информацией
товар = "Хлеб"
цена = 25.50
количество = int(input(f"Сколько купить '{товар}' по {цена} руб.? "))
общая_стоимость = цена * количество
print(f"Общая стоимость: {общая_стоимость} руб.")
Советы по использованию input()
- 1. Всегда используйте приглашения - они делают программу понятнее
- 2. Проверяйте ввод - пользователи могут ввести неожиданные данные
- 3. Преобразуйте типы - помните, что input() всегда возвращает строку
- 4. Обрабатывайте ошибки - используйте try-except для безопасности
Библиотека math в Python
Модули в программировании
Модуль math — это встроенная библиотека Python, которая содержит множество
математических функций и констант. Она позволяет выполнять сложные математические
вычисления, такие как извлечение корней, тригонометрические функции, логарифмы и многое
другое.
Импорт модуля
Способы импорта
# Способ 1: Импорт всего модуля
import math
# Использование: math.функция()
результат = math.sqrt(16)
print(результат) # 4.0
# Способ 2: Импорт конкретных функций
from math import sqrt, pi
# Использование: функция() без math.
результат = sqrt(16)
print(pi) # 3.141592653589793
# Способ 3: Импорт всех функций (не рекомендуется)
from math import *
# Можно использовать все функции без math.
результат = sqrt(16)
константа = pi
Рекомендуемый способ
# Лучше всего использовать полный импорт
import math
# Это более читаемо и безопасно
корень = math.sqrt(25)
синус = math.sin(math.pi / 2)
Основные функции модуля math в Python
math.sqrt()
Извлечение квадратного корня
math.sqrt() — функция для извлечения квадратного корня из числа.
import math
# Извлечение квадратного корня
print(math.sqrt(16)) # 4.0
print(math.sqrt(25)) # 5.0
print(math.sqrt(2)) # 1.4142135623730951
print(math.sqrt(100)) # 10.0
# Корень из дробного числа
print(math.sqrt(2.25)) # 1.5
print(math.sqrt(0.25)) # 0.5
math.pow()
Возведение в степень
math.pow() — функция для возведения числа в степень.
import math
# Возведение в степень
print(math.pow(2, 3)) # 8.0
print(math.pow(5, 2)) # 25.0
print(math.pow(10, 0)) # 1.0
# Дробные степени
print(math.pow(8, 1/3)) # 2.0 (кубический корень)
print(math.pow(9, 0.5)) # 3.0 (квадратный корень)
# Отрицательные степени
print(math.pow(2, -3)) # 0.125 (1/8)
Сравнение с оператором **
import math
# math.pow() всегда возвращает float
print(math.pow(2, 3)) # 8.0
print(type(math.pow(2, 3))) # <class 'float'>
# Оператор ** сохраняет тип
print(2 ** 3) # 8
print(type(2 ** 3)) # <class 'int'>
Тригонометрические функции
math.sin(), math.cos(), math.tan()
Тригонометрические функции работают с углами в радианах.
import math
# Синус
print(math.sin(0)) # 0.0
print(math.sin(math.pi/2)) # 1.0 (90 градусов)
print(math.sin(math.pi)) # 0.0 (180 градусов)
# Косинус
print(math.cos(0)) # 1.0
print(math.cos(math.pi/2)) # 0.0 (практически 0)
print(math.cos(math.pi)) # -1.0
# Тангенс
print(math.tan(0)) # 0.0
print(math.tan(math.pi/4)) # 1.0 (45 градусов)
Преобразование градусов в радианы
import math
# Функция для преобразования градусов в радианы
def градусы_в_радианы(градусы):
return градусы * math.pi / 180
# Или используем встроенную функцию
угол_градусы = 90
угол_радианы = math.radians(угол_градусы)
print(f"Синус 90°: {math.sin(угол_радианы)}") # 1.0
print(f"Косинус 90°: {math.cos(угол_радианы)}") # 0.0
math.log()
Логарифмы
math.log() — функция для вычисления логарифмов.
import math
# Натуральный логарифм (основание e)
print(math.log(1)) # 0.0
print(math.log(math.e)) # 1.0
print(math.log(10)) # 2.302585092994046
# Логарифм с другим основанием
print(math.log(8, 2)) # 3.0 (логарифм 8 по основанию 2)
print(math.log(100, 10)) # 2.0 (логарифм 100 по основанию 10)
# Специальные логарифмы
print(math.log10(100)) # 2.0 (десятичный логарифм)
print(math.log2(8)) # 3.0 (двоичный логарифм)
Другие полезные функции
math.ceil() и math.floor()
import math
# Округление вверх
print(math.ceil(3.1)) # 4
print(math.ceil(3.9)) # 4
print(math.ceil(-2.1)) # -2
# Округление вниз
print(math.floor(3.1)) # 3
print(math.floor(3.9)) # 3
print(math.floor(-2.1)) # -3
# Практический пример
цена = 99.99
количество = 7
общая_стоимость = цена * количество
print(f"Точная стоимость: {общая_стоимость}")
print(f"Округлено вверх: {math.ceil(общая_стоимость)}")
print(f"Округлено вниз: {math.floor(общая_стоимость)}")
math.factorial()
import math
# Факториал
print(math.factorial(5)) # 120 (5! = 5*4*3*2*1)
print(math.factorial(0)) # 1
print(math.factorial(1)) # 1
# Практический пример: размещения
def размещения(n, k):
return math.factorial(n) // math.factorial(n - k)
print(f"Размещений из 5 по 3: {размещения(5, 3)}") # 60
math.gcd() и math.lcm()
import math
# Наибольший общий делитель
print(math.gcd(12, 18)) # 6
print(math.gcd(15, 25)) # 5
# Наименьшее общее кратное (с Python 3.9+)
# print(math.lcm(12, 18)) # 36
# Практический пример
числитель = 12
знаменатель = 18
нод = math.gcd(числитель, знаменатель)
упрощенный_числитель = числитель // нод
упрощенный_знаменатель = знаменатель // нод
print(f"Дробь {числитель}/{знаменатель} = {упрощенный_числитель}/{упрощенный_знаменатель}")
math.fabs()
import math
# Абсолютное значение (всегда возвращает float)
print(math.fabs(-5)) # 5.0
print(math.fabs(3.14)) # 3.14
print(math.fabs(-3.14)) # 3.14
# Сравнение с abs()
print(abs(-5)) # 5 (int)
print(math.fabs(-5)) # 5.0 (float)
Константы в модуле math в питоне
math.pi — число пи
Константа π (пи)
math.pi — это математическая константа π ≈ 3.14159...
import math
# Значение π
print(math.pi) # 3.141592653589793
# Использование в формулах
радиус = 5
длина_окружности = 2 * math.pi * радиус
площадь_круга = math.pi * радиус**2
print(f"Радиус: {радиус}")
print(f"Длина окружности: {длина_окружности:.2f}")
print(f"Площадь круга: {площадь_круга:.2f}")
math.e
Константа e (число Эйлера)
math.e — это математическая константа e ≈ 2.71828...
import math
# Значение e
print(math.e) # 2.718281828459045
# Связь с натуральным логарифмом
print(math.log(math.e)) # 1.0
print(math.exp(1)) # 2.718281828459045 (e^1)
Полезные советы
1. Всегда импортируйте math в начале программы
2. Помните о радианах в тригонометрических функциях
3. Проверяйте входные данные для функций с ограничениями
4. Используйте константы math.pi и math.e вместо приближенных
значений
Примеры программ на Python
Давайте рассмотрим несколько примеров программ на Python для решения разных задач.
Пример программы на питоне: Калькулятор площади круга
Вот простой код для вычисления площади круга по заданному радиусу:
import math
radius = float(input("Введите радиус круга: "))
area = math.pi * radius ** 2
print(f"Площадь круга с радиусом {radius} равна {area:.2f}")
Пример программы на пайтоне: Калькулятор
Пример простого калькулятора, который выполняет основные арифметические операции:
operation = input("Введите операцию (+, -, *, /): ")
num1 = float(input("Введите первое число: "))
num2 = float(input("Введите второе число: "))
if operation == '+':
result = num1 + num2
print(f"Результат: {result}")
elif operation == '-':
result = num1 - num2
print(f"Результат: {result}")
elif operation == '*':
result = num1 * num2
print(f"Результат: {result}")
elif operation == '/':
result = num1 / num2
print(f"Результат: {result}")
else:
print("Неверная операция")
Пример простой программы на Python: Конвертер валют
Простой пример конвертера валют, который использует фиксированный курс:
amount = float(input("Введите сумму в валюте (например, USD): "))
rate = float(input("Введите курс (например, 0.85 для USD в EUR): "))
converted_amount = amount * rate
print(f"Сумма в конвертируемой валюте: {converted_amount:.2f}")
Эти примеры показывают основные возможности Python для решения практических задач, таких как вычисление площадей, выполнение математических операций и конвертация валют.