
Вместо фигурных скобок, как в C-подобных языках, Python использует отступы для определения блоков кода. Нарушение структуры отступов приводит к ошибкам выполнения. Рекомендуется использовать 4 пробела для одного уровня вложенности и избегать табуляции.
Python строго различает типы данных, но при этом не требует их явного указания при создании переменной. Например, x = 10 создаёт переменную x с целочисленным значением. Для объединения строк и чисел необходимо выполнять явное преобразование типов с помощью str(), int(), float().
Операторы сравнения, циклы for и while, условные конструкции if-elif-else работают интуитивно понятно. Например, цикл for i in range(5): выполнится 5 раз, начиная с нуля. Конструкция if x > 0: выполнит блок кода только если значение x положительное.
Для чтения данных от пользователя применяется функция input(). Она всегда возвращает строку, которую при необходимости нужно преобразовать в нужный тип данных. Например, int(input()) преобразует ввод в целое число. Это важно учитывать при написании арифметических операций.
Использование встроенных функций и стандартных библиотек позволяет решать практические задачи без необходимости писать сложный код. Модуль math предоставляет математические функции, такие как sqrt() или ceil(), а модуль random – генерацию случайных чисел. Это расширяет возможности даже самого простого скрипта.
Как объявлять переменные и работать с типами данных в Python
В Python переменные создаются при первом присваивании значения. Объявлять тип не требуется – интерпретатор определяет его автоматически.
Примеры:
x = 10 # int
name = "Анна" # str
price = 19.99 # float
is_active = True # bool
Имена переменных чувствительны к регистру и должны начинаться с буквы или нижнего подчёркивания. Цифры допускаются, но не в начале имени.
Python поддерживает базовые типы данных: int, float, str, bool, list, tuple, set, dict. Для явного указания типа можно использовать встроенную функцию type():
print(type(x)) # <class 'int'>
print(type(price)) # <class 'float'>
Проверка типа перед операцией снижает риск ошибок:
if isinstance(price, float):
print("Цена – число с плавающей точкой")
Преобразование типов выполняется явно:
age = "25"
age = int(age) # Преобразование строки в число
number = 3.14
text = str(number) # Число в строку
Для аннотации типов применяют синтаксис Python 3.6+ с подсказками:
def greet(name: str) -> str:
return "Привет, " + name
user_age: int = 30
Используйте аннотации для повышения читаемости и поддержки инструментов статического анализа.
Синтаксис условных операторов: if, elif и else
Оператор if используется для выполнения блока кода при выполнении заданного условия. Условие должно возвращать логическое значение: True или False. После условия ставится двоеточие, а последующий код отделяется отступом (обычно 4 пробела).
age = 18
if age >= 18:
print("Доступ разрешён")
Чтобы обработать альтернативные варианты, используется elif – это сокращение от «else if». Он проверяется только если предыдущий if дал False.
score = 75
if score >= 90:
print("Отлично")
elif score >= 70:
print("Хорошо")
Если ни одно из условий не выполнилось, можно использовать else. Он не принимает условий и выполняется в последнюю очередь.
temperature = 5
if temperature > 25:
print("Жарко")
elif temperature > 10:
print("Тепло")
else:
print("Холодно")
Рекомендуется избегать вложенности более чем в 2–3 уровня. При необходимости объединяйте условия с логическими операторами and, or, а также используйте скобки для повышения читаемости.
if age >= 18 and has_passport:
print("Может путешествовать")
Будьте внимательны с отступами – это критично в Python. Неправильный отступ приведёт к синтаксической ошибке.
Как использовать циклы for и while для перебора данных
Цикл for чаще всего применяют для последовательного прохода по коллекциям: спискам, строкам, множествам, словарям.
- Список:
fruits = ['яблоко', 'банан', 'вишня'] for fruit in fruits: print(fruit) - Строка:
word = 'python' for char in word: print(char) - Словарь:
person = {'имя': 'Анна', 'возраст': 30} for key, value in person.items(): print(key, value) - С помощью range:
for i in range(5): print(i)
Цикл while используют, когда количество итераций заранее неизвестно. Он выполняется, пока условие истинно.
- Простой счётчик:
count = 0 while count < 5: print(count) count += 1 - Перебор списка до определённого значения:
numbers = [1, 3, 5, 7, 9] index = 0 while index < len(numbers) and numbers[index] < 7: print(numbers[index]) index += 1
Рекомендации:
- Используйте
forдля коллекций и когда известно количество повторений. whileполезен, когда остановка зависит от динамического условия.- Избегайте бесконечных циклов – проверяйте условие выхода заранее.
- Для досрочного выхода из цикла применяйте
break.
Работа со строками: конкатенация, форматирование и методы строк

- Конкатенация (объединение): используется оператор
+. Пробелы добавляются вручную.
name = "Анна"
greeting = "Привет, " + name + "!"
print(greeting) # Привет, Анна!
- Повторение строки: оператор
*позволяет дублировать строку указанное количество раз.
print("ha" * 3) # hahaha
- Форматирование через f-строки: предпочтительный способ вставки значений в строку. Работает с выражениями.
age = 30
print(f"Мне {age} лет") # Мне 30 лет
- Метод
format(): альтернатива f-строкам. Удобен при генерации шаблонов.
template = "Имя: {}, возраст: {}"
print(template.format("Иван", 25)) # Имя: Иван, возраст: 25
- Методы работы со строками:
.lower()– переводит в нижний регистр.upper()– в верхний.strip()– удаляет пробелы по краям.replace(старое, новое)– замена подстроки.split(разделитель)– разбивает строку на список.join(список)– соединяет список строк в одну строку
text = " Пример строки "
print(text.strip().upper()) # ПРИМЕР СТРОКИ
words = "яблоко,груша,персик".split(",")
print(words) # ['яблоко', 'груша', 'персик']
joined = " | ".join(words)
print(joined) # яблоко | груша | персик
Методы не изменяют оригинальную строку, а возвращают новую. Это позволяет безопасно применять цепочки вызовов.
Создание и использование функций с аргументами и значениями по умолчанию
В Python функции определяются с помощью ключевого слова def. Аргументы с значениями по умолчанию позволяют вызывать функцию без указания всех параметров.
Пример:
def greet(name, greeting="Привет"):
print(f"{greeting}, {name}!")
Значения по умолчанию задаются справа от имени параметра через знак =. Они применяются, если аргумент не передан при вызове функции.
Важно: все параметры с значениями по умолчанию должны следовать после параметров без них. Ошибка:
# Неправильно:
def func(x=0, y): # SyntaxError
pass
Рекомендовано использовать значения по умолчанию для повышения читаемости и гибкости кода. Типичные случаи: настройки, флаги, необязательные параметры.
Допустимо использовать любые типы значений по умолчанию: строки, числа, логические значения, даже функции или выражения:
def power(base, exponent=2):
return base ** exponent
print(power(5)) # 25
print(power(2, 3)) # 8
Не использовать изменяемые типы (например, списки, словари) в качестве значений по умолчанию – это может привести к неожиданному поведению:
def append_item(item, collection=[]):
collection.append(item)
return collection
print(append_item(1)) # [1]
print(append_item(2)) # [1, 2] – ошибка, значение сохраняется
Правильно использовать None и проверку внутри функции:
def append_item(item, collection=None):
if collection is None:
collection = []
collection.append(item)
return collection
Значения по умолчанию вычисляются один раз – при определении функции. Это стоит учитывать при использовании выражений, зависящих от времени или состояния.
Как работать со списками, кортежами и словарями

В Python списки, кортежи и словари представляют собой базовые структуры данных, каждая из которых имеет свои особенности и область применения. Знание того, как правильно работать с ними, ускоряет разработку и делает код более эффективным.
Списки – изменяемая последовательность элементов. Они могут содержать любые типы данных и позволяют добавлять, изменять и удалять элементы. Основные операции:
list.append(x)– добавление элемента в конец списка;list.remove(x)– удаление первого встреченного элемента x;list.pop(i)– удаление элемента по индексу i;list.extend(iterable)– добавление всех элементов другого списка;len(list)– получение длины списка.
Пример:
numbers = [1, 2, 3]
numbers.append(4) # Добавление 4
numbers.remove(2) # Удаление элемента 2
print(numbers) # [1, 3, 4]
Кортежи – неизменяемая последовательность данных. После создания их элементы нельзя изменять. Используются для хранения данных, которые не должны изменяться. Главные особенности:
- Неизменяемость: нельзя добавлять, удалять или изменять элементы;
- Кортежи быстрее списков, если нужно работать с постоянными данными;
- Можно использовать как ключи в словарях.
Пример:
coordinates = (10, 20)
# coordinates[0] = 15 # Ошибка, кортежи нельзя изменять
print(coordinates) # (10, 20)
Словари – коллекция пар «ключ-значение». Они позволяют быстро находить элементы по ключу. Ключи должны быть уникальными и неизменяемыми, а значения – любыми типами данных. Основные операции:
dict[key] = value– добавление или изменение элемента;dict.get(key)– получение значения по ключу (возвращает None, если ключ не найден);dict.pop(key)– удаление элемента по ключу;len(dict)– получение количества элементов в словаре.
Пример:
student = {'name': 'Ivan', 'age': 21}
student['age'] = 22 # Изменение значения по ключу
student['city'] = 'Moscow' # Добавление нового ключа
del student['name'] # Удаление ключа
print(student) # {'age': 22, 'city': 'Moscow'}
Работа с перечисленными структурами данных позволяет эффективно организовывать и обрабатывать данные в Python. Для оптимизации производительности следует выбирать наиболее подходящий тип в зависимости от задач. Списки идеальны для изменяемых последовательностей, кортежи – для постоянных, а словари – для хранения и быстрого поиска значений по ключу.
Обработка ошибок с помощью конструкции try и except

В Python для обработки исключений используется конструкция try и except. Она позволяет перехватывать ошибки, предотвращая их влияние на выполнение программы. Важно понимать, что обработка ошибок нужна для того, чтобы не останавливать выполнение программы, когда возникает непредвиденная ситуация, а вместо этого реагировать на неё безопасным и контролируемым способом.
Конструкция выглядит следующим образом:
try:
# Код, который может вызвать ошибку
except ТипОшибки:
# Код, который выполнится при ошибке
Когда в блоке try возникает ошибка, выполнение программы переключается на блок except. Если ошибка не возникает, блок except будет пропущен.
Пример 1: Обработка деления на ноль:
try:
result = 10 / 0
except ZeroDivisionError:
print("Ошибка: деление на ноль")
В этом примере, если возникает ошибка деления на ноль (ZeroDivisionError), программа не завершится, а выведет сообщение об ошибке.
Пример 2: Обработка ошибки при открытии файла:
try:
file = open('nonexistent_file.txt', 'r')
except FileNotFoundError:
print("Файл не найден")
Здесь, если файл не существует, будет выведено сообщение об ошибке, и программа продолжит работать.
Если вы хотите перехватить все возможные ошибки, можно использовать обобщенный блок except:
try:
x = int("invalid")
except Exception as e:
print(f"Произошла ошибка: {e}")
Однако, лучше избегать ловли всех ошибок подряд, так как это может скрывать проблемы в коде. Рекомендуется указывать конкретные типы ошибок для их точной обработки.
Использование else и finally: Можно добавить блоки else и finally для дополнительной логики. Блок else выполняется, если в try не возникло ошибок, а блок finally всегда выполняется в конце, независимо от наличия ошибок.
try:
result = 10 / 2
except ZeroDivisionError:
print("Ошибка деления на ноль")
else:
print(f"Результат: {result}")
finally:
print("Блок finally выполнен")
Рекомендации:
- Используйте обработку ошибок для предсказуемых ошибок, таких как неправильный ввод или недоступные файлы.
- Не злоупотребляйте использованием общего блока
except, чтобы не скрыть потенциально важные ошибки. - Применяйте блок
finallyдля освобождения ресурсов, например, для закрытия файлов или соединений.
Чтение и запись файлов с использованием open, read и write

Функция open() в Python используется для открытия файлов и получения доступа к их содержимому. Для чтения или записи файла, нужно указать соответствующий режим. Режимы открытия файла могут быть следующими:
'r'– только для чтения (по умолчанию);'w'– только для записи (создаёт новый файл, если его нет);'a'– дозапись в файл (если файл существует, данные добавляются в конец);'rb','wb'– бинарный режим (для работы с не-текстовыми данными).
Пример открытия файла для чтения:
f = open('example.txt', 'r')
content = f.read()
f.close()
В этом примере f.read() считывает весь текст из файла и сохраняет его в переменную content. После работы с файлом важно закрыть его с помощью f.close().
Для записи данных в файл используется метод write(). Если файл открыт в режиме 'w' или 'a', можно записать текст или данные в файл:
f = open('example.txt', 'w')
f.write('Hello, World!')
f.close()
Этот код откроет файл example.txt в режиме записи и запишет строку 'Hello, World!' в него. Важно помнить, что при использовании режима 'w' старое содержимое файла будет перезаписано.
Для чтения данных построчно можно использовать метод readline() или цикл с readlines(). Это полезно, когда необходимо обработать файл по строкам:
f = open('example.txt', 'r')
for line in f:
print(line.strip())
f.close()
Метод strip() удаляет лишние символы новой строки, чтобы текст был более читаемым.
Чтобы работать с файлами безопасно и избежать забывания закрытия файлов, рекомендуется использовать контекстный менеджер with, который автоматически закроет файл после завершения работы с ним:
with open('example.txt', 'r') as f:
content = f.read()
Контекстный менеджер with гарантирует, что файл будет закрыт даже в случае возникновения ошибок.
