Начало работы с Python [1.3]
Операции с базовыми типами данных в Python: от простого к практике
Введение
В предыдущем уроке мы познакомились с базовыми типами данных в Python: int, float, bool, str, list, tuple, dict и set. Теперь пришло время научиться работать с этими данными — выполнять различные операции, преобразования и решать реальные задачи.
Представьте, что типы данных — это инструменты в вашем наборе, а операции — это способы их использования. Сегодня мы научимся применять эти инструменты эффективно!
Арифметические операции с числами
Целые числа (int) и числа с плавающей точкой (float)
Python поддерживает все стандартные арифметические операции:
# Сложение и вычитание
a = 10 + 5 # 15
b = 20 - 7 # 13
# Умножение и деление
c = 6 * 4 # 24
d = 15 / 3 # 5.0 (всегда float!)
# Целочисленное деление и остаток
e = 17 // 3 # 5 (целая часть)
f = 17 % 3 # 2 (остаток)
# Возведение в степень
g = 2 ** 3 # 8 (2 в степени 3)
h = 16 ** 0.5 # 4.0 (квадратный корень)
Важно! Деление / всегда возвращает float, даже если результат целый.
Практический пример: расчет скидки
# Цена товара и размер скидки
original_price = 1500
discount_percent = 15
# Расчет скидки
discount_amount = original_price * discount_percent / 100
final_price = original_price - discount_amount
print(f"Цена со скидкой {discount_percent}%: {final_price:.2f} ₽")
# Вывод: Цена со скидкой 15%: 1275.00 ₽
Операции сравнения
Сравнения возвращают логические значения True или False:
x = 10
y = 20
# Равенство и неравенство
print(x == y) # False
print(x != y) # True
# Больше, меньше, больше или равно, меньше или равно
print(x < y) # True
print(x > y) # False
print(x <= 10) # True
print(x >= 15) # False
Цепочки сравнений
Python позволяет создавать удобные цепочки:
age = 25
is_adult = 18 <= age < 65 # True
print(f"Взрослый: {is_adult}") # Взрослый: True
Логические операции
Для работы с булевыми значениями используются три оператора:
a = True
b = False
# AND (и) - True только если оба значения True
print(a and b) # False
print(a and a) # True
# OR (или) - True если хотя бы одно значение True
print(a or b) # True
print(b or b) # False
# NOT (не) - инвертирует значение
print(not a) # False
print(not b) # True
Практический пример: проверка доступа
user_age = 22
has_license = True
is_sober = True
# Проверка, может ли пользователь водить автомобиль
can_drive = user_age >= 18 and has_license and is_sober
print(f"Может водить: {can_drive}") # Может водить: True
Операции со строками (str)
Строки в Python поддерживают множество полезных операций:
Конкатенация и повторение
first_name = "Иван"
last_name = "Петров"
# Объединение строк
full_name = first_name + " " + last_name
print(full_name) # Иван Петров
# Повторение строки
separator = "-" * 30
print(separator) # ------------------------------
Форматирование строк (f-строки)
Современный способ форматирования (Python 3.6+):
name = "Анна"
age = 28
city = "Москва"
# f-строка
message = f"Привет, меня зовут {name}. Мне {age} лет, я живу в {city}."
print(message)
# Привет, меня зовут Анна. Мне 28 лет, я живу в Москве.
Полезные методы строк
text = " Python - лучший язык программирования! "
# Удаление пробелов
clean_text = text.strip() # "Python - лучший язык программирования!"
# Преобразование регистра
print(clean_text.lower()) # python - лучший язык программирования!
print(clean_text.upper()) # PYTHON - ЛУЧШИЙ ЯЗЫК ПРОГРАММИРОВАНИЯ!
# Поиск и замена
print(clean_text.find("лучший")) # 11 (индекс начала)
new_text = clean_text.replace("лучший", "самый популярный")
print(new_text) # Python - самый популярный язык программирования!
Операции со списками (list)
Списки — один из самых гибких типов данных в Python.
Основные операции
# Создание списка
fruits = ["яблоко", "банан", "апельсин", "груша"]
# Добавление элементов
fruits.append("киви") # Добавить в конец
fruits.insert(1, "манго") # Вставить по индексу
# Удаление элементов
fruits.remove("банан") # Удалить по значению
popped_fruit = fruits.pop(2) # Удалить по индексу и вернуть значение
# Объединение списков
more_fruits = ["ананас", "виноград"]
all_fruits = fruits + more_fruits
print(all_fruits)
# ['яблоко', 'манго', 'апельсин', 'груша', 'киви', 'ананас', 'виноград']
Срезы (slices)
Мощный инструмент для работы с частями списка:
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Срез от индекса 2 до 5 (не включая 5)
print(numbers[2:5]) # [2, 3, 4]
# Срез от начала до индекса 4
print(numbers[:4]) # [0, 1, 2, 3]
# Срез от индекса 6 до конца
print(numbers[6:]) # [6, 7, 8, 9]
# Шаг в срезе (каждый второй элемент)
print(numbers[::2]) # [0, 2, 4, 6, 8]
# Обратный порядок
print(numbers[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Практический пример: обработка данных
# Список оценок студентов
grades = [4, 5, 3, 4, 5, 2, 4, 5, 3, 4]
# Фильтрация: оставить только хорошие оценки (4 и 5)
good_grades = [grade for grade in grades if grade >= 4]
# Расчет среднего балла
average = sum(good_grades) / len(good_grades)
print(f"Хорошие оценки: {good_grades}")
print(f"Средний балл: {average:.2f}")
# Хорошие оценки: [4, 5, 4, 5, 4, 5, 4]
# Средний балл: 4.43
Работа со словарями (dict)
Словари идеальны для хранения структурированных данных.
Основные операции
# Создание словаря
student = {
"name": "Мария",
"age": 20,
"courses": ["математика", "физика", "программирование"],
"active": True
}
# Получение значений
print(student["name"]) # Мария
print(student.get("email")) # None (безопасное получение)
# Добавление и изменение
student["email"] = "Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. " # Новый ключ
student["age"] = 21 # Изменение существующего
# Удаление
del student["active"] # Удалить ключ
email = student.pop("email") # Удалить и вернуть значение
# Проверка наличия ключа
if "courses" in student:
print("Студент изучает:", ", ".join(student["courses"]))
Перебор словаря
# Перебор ключей
for key in student:
print(f"Ключ: {key}, Значение: {student[key]}")
# Перебор пар ключ-значение
for key, value in student.items():
print(f"{key}: {value}")
# Перебор только значений
for value in student.values():
print(f"Значение: {value}")
Практический пример: статистика слов
text = "python python программирование код программирование python язык"
# Разбить текст на слова
words = text.split()
# Подсчет частоты слов
word_count = {}
for word in words:
word_count[word] = word_count.get(word, 0) + 1
print("Статистика слов:")
for word, count in word_count.items():
print(f"{word}: {count} раз")
# Вывод:
# Статистика слов:
# python: 3 раз
# программирование: 2 раз
# код: 1 раз
# язык: 1 раз
Работа с множествами (set)
Множества отлично подходят для операций с уникальными значениями.
Основные операции
# Создание множеств
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# Объединение (все уникальные элементы)
union_set = set1 | set2 # {1, 2, 3, 4, 5, 6, 7, 8}
# Пересечение (общие элементы)
intersection_set = set1 & set2 # {4, 5}
# Разность (элементы первого без второго)
difference_set = set1 - set2 # {1, 2, 3}
# Симметрическая разность (элементы только в одном из множеств)
sym_diff_set = set1 ^ set2 # {1, 2, 3, 6, 7, 8}
Практический пример: анализ данных
# Списки пользователей двух сервисов
users_service1 = ["ivan", "maria", "petr", "anna", "alex"]
users_service2 = ["maria", "alex", "olga", "dmitry", "ivan"]
# Преобразование в множества
set1 = set(users_service1)
set2 = set(users_service2)
# Пользователи, которые есть в обоих сервисах
common_users = set1 & set2
print(f"Общие пользователи ({len(common_users)}): {common_users}")
# Общие пользователи (3): {'ivan', 'maria', 'alex'}
# Пользователи только первого сервиса
only_service1 = set1 - set2
print(f"Только в первом сервисе: {only_service1}")
# Только в первом сервисе: {'petr', 'anna'}
Преобразование типов данных
Часто нужно преобразовывать данные из одного типа в другой.
Основные функции преобразования
# Строки в числа
num_str = "42"
num_int = int(num_str) # 42
num_float = float(num_str) # 42.0
# Числа в строки
age = 25
age_str = str(age) # "25"
# Списки и кортежи
my_list = [1, 2, 3]
my_tuple = tuple(my_list) # (1, 2, 3)
my_list_again = list(my_tuple) # [1, 2, 3]
# Множества
numbers = [1, 2, 2, 3, 3, 3]
unique_numbers = set(numbers) # {1, 2, 3}
# Словари из списков
keys = ["name", "age", "city"]
values = ["Елена", 28, "Санкт-Петербург"]
person = dict(zip(keys, values))
# {'name': 'Елена', 'age': 28, 'city': 'Санкт-Петербург'}
Практический пример: валидация ввода
def validate_input():
while True:
user_input = input("Введите число от 1 до 100: ")
try:
number = int(user_input)
if 1 <= number <= 100:
return number
else:
print("Число должно быть в диапазоне от 1 до 100!")
except ValueError:
print("Пожалуйста, введите корректное число!")
# result = validate_input()
# print(f"Вы ввели: {result}")
Практическое задание
Задача: Создайте программу для анализа студенческих оценок.
Требования:
- Создайте словарь с оценками студентов по разным предметам
- Рассчитайте средний балл для каждого студента
- Найдите студента с самым высоким средним баллом
- Определите, сколько студентов имеют средний балл выше 4.0
- Выведите результаты в удобочитаемом формате
Пример реализации:
# Данные студентов
students_data = {
"Иванов": [4, 5, 4, 5, 4],
"Петрова": [5, 5, 5, 4, 5],
"Сидоров": [3, 4, 3, 4, 3],
"Козлова": [5, 4, 5, 3, 4],
"Смирнов": [4, 4, 4, 4, 4]
}
# 1. Рассчитываем средние баллы
average_grades = {}
for student, grades in students_data.items():
average = sum(grades) / len(grades)
average_grades[student] = round(average, 2)
# 2. Находим студента с самым высоким баллом
best_student = max(average_grades.items(), key=lambda x: x[1])
# 3. Считаем студентов с баллом выше 4.0
top_students = [student for student, avg in average_grades.items() if avg > 4.0]
# 4. Выводим результаты
print("АНАЛИЗ СТУДЕНЧЕСКИХ ОЦЕНОК")
print("-" * 40)
print("\nСредние баллы студентов:")
for student, avg in average_grades.items():
print(f"{student}: {avg}")
print(f"\nСтудент с самым высоким баллом: {best_student[0]} ({best_student[1]})")
print(f"\nКоличество студентов с баллом выше 4.0: {len(top_students)}")
print(f"Список: {', '.join(top_students)}")
Ожидаемый вывод:
АНАЛИЗ СТУДЕНЧЕСКИХ ОЦЕНОК
----------------------------------------
Средние баллы студентов:
Иванов: 4.4
Петрова: 4.8
Сидоров: 3.4
Козлова: 4.2
Смирнов: 4.0
Студент с самым высоким баллом: Петрова (4.8)
Количество студентов с баллом выше 4.0: 3
Список: Иванов, Петрова, Козлова
Советы и лучшие практики
- Используйте f-строки для форматирования строк — это современный и читаемый способ
- Проверяйте наличие ключа в словаре перед обращением, используя
.get()илиin - Используйте множества для удаления дубликатов и быстрых проверок наличия элемента
- Применяйте списковые включения (list comprehensions) для создания списков — это кратко и эффективно
- Всегда валидируйте пользовательский ввод перед преобразованием типов
- Именуйте переменные осмысленно — это сделает код понятным даже через год
Дополнительные ресурсы
- Официальная документация Python: docs.python.org/3/
- Книги: "Чистый Python" Дэна Бейдера, "Python. К вершинам мастерства" Лучано Рамальо
Тест для самопроверки
1. Что вернет выражение 15 // 4?
2. Какой результат будет у bool(0)?
3. Что делает метод strip() у строк?
4. Как добавить элемент в конец списка?
list.add(item)list.append(item)list.insert(item)list.push(item)5. Как проверить наличие ключа в словаре?
if key in dict:if dict.has_key(key):if key.exists(dict):if dict.contains(key):Ответы: 1-б, 2-б, 3-б, 4-б, 5-а
Заключение
Сегодня мы изучили основные операции с базовыми типами данных в Python. Вы научились:
- ✓ Выполнять арифметические и логические операции
- ✓ Работать со строками и форматировать их
- ✓ Манипулировать списками с помощью срезов и методов
- ✓ Использовать словари для структурирования данных
- ✓ Применять множества для работы с уникальными значениями
- ✓ Преобразовывать типы данных
- ✓ Решать практические задачи
Эти навыки — фундамент для дальнейшего изучения Python.
Целевая аудитория: Начинающие программисты, студенты, специалисты, желающие освоить Python для анализа данных, веб-разработки или автоматизации задач.
![Начало работы с Python [1.3] Начало работы с Python [1.3]](https://technobee.ru/media/zoo/images/line100_python_24f065d5f44b128d7987e916e0a668ad.png)