Урок 1. Переменные, ввод-вывод и базовые типы данных в Python

Переменные, ввод-вывод и базовые типы данных в Python



Содержание урока



Теория

1. Что такое программа. Язык Python

Программа — это последовательность инструкций, которые сообщают компьютеру, что нужно сделать. Инструкции могут быть следующими:

  • считать данные с клавиатуры;
  • выполнить вычисления (сложение, вычитание, умножение, деление);
  • вывести информацию на экран;
  • принять решение (условный оператор);
  • повторить действие (цикл).

Программу можно сравнить с рецептом: это список шагов, которые при выполнении в правильном порядке дают результат.

Язык программирования — это формальный набор правил, позволяющий человеку общаться с компьютером. Текст, записанный на языке программирования, называется исходным кодом.

Примеры языков программирования: Python, C, C++, Java, C#, Ruby, PHP.

Почему Python?

Python — один из самых популярных языков программирования в мире, и он особенно хорошо подходит для начинающих:

Преимущество Пояснение
Простой синтаксис Читается как обычный английский текст, легко учить
Читаемый код Использует отступы вместо фигурных скобок
Интерпретируемый Не требует шага компиляции — код запускается напрямую
Динамическая типизация Не нужно объявлять типы переменных
Большое сообщество Обширные библиотеки и поддержка
Универсальность Веб-разработка, анализ данных, ИИ, автоматизация

Python используется в Google, NASA, Instagram и многих других крупных организациях.

Компилируемые и интерпретируемые языки

Компилируемые языки Интерпретируемые языки
C, C++, Java Python, Ruby, JavaScript
Исходный код → Компилятор → Машинный код → Выполнение Исходный код → Интерпретатор → Построчное выполнение
Быстрее выполняется Медленнее выполняется
Ошибки обнаруживаются на этапе компиляции Ошибки обнаруживаются во время выполнения
Зависит от платформы Не зависит от платформы

Python — интерпретируемый язык. Интерпретатор читает и выполняет код строка за строкой, что упрощает тестирование и отладку.

Интересный факт: Python был создан Гвидо ван Россумом в 1991 году как хобби-проект. Название происходит от комедийного шоу «Монти Пайтон» (Monty Python’s Flying Circus), а не от змеи!

Как работает интерпретатор Python

[Ваш код (.py)] → [Интерпретатор] → [Байт-код] → [Виртуальная машина Python] → [Результат]
  1. Вы пишете исходный код в файле .py.
  2. Интерпретатор читает ваш код.
  3. Он преобразует его в байт-код (промежуточное представление).
  4. Виртуальная машина Python (PVM) выполняет байт-код.

Это делает Python платформо-независимым — один и тот же код работает в Windows, macOS и Linux.

2. Первые программы: print() и input()

Функция print()

Функция print() выводит данные на экран (в консоль).

Пример: базовый синтаксис
print("Hello, World!")
print(42)
print(3.14159)

Вывод:

Hello, World!
42
3.14159

Можно передавать несколько аргументов через запятую — print() автоматически ставит между ними пробел:

print("The answer is", 42)
print("Today", "is", "Monday")

Вывод:

The answer is 42
Today is Monday

Параметр sep

Параметр sep задаёт разделитель между аргументами (по умолчанию — пробел):

print("a", "b", "c", sep="*")
print("d", "e", "f", sep="**")

Вывод:

a*b*c
d**e**f

Параметр end

Параметр end задаёт то, что выводится в конце (по умолчанию — перевод строки \n):

print("Hello", end="")
print("World")

Вывод:

HelloWorld
Примеры:
print("apple", "banana", "cherry", sep=",")
# Вывод: apple,banana,cherry
 
print("One", "Two", "Three", sep=" - ", end="!\n")
# Вывод: One - Two - Three!

Функция input()

Функция input() считывает строку текста, введённую пользователем.

name = input("Enter your name: ")
print("Hello", name)

Пример работы:

Enter your name: Alice
Hello Alice
Важно: input() всегда возвращает строку — даже если пользователь ввёл числа:

age = input("Enter your age: ")
print("In 10 years you will be", age + 10)  # ОШИБКА!

Как преобразовывать строки в числа, мы узнаем в следующих разделах.

input() можно вызывать и без подсказки:

name = input()
print("Hello,", name)

Интерактивная программа

# Простая интерактивная программа
print("Welcome to my first program!")
name = input("What is your name? ")
print("Nice to meet you,", name)
print("Let's learn Python together!")

Пример работы:

Welcome to my first program!
What is your name? Alex
Nice to meet you, Alex
Let's learn Python together!

3. Переменные и оператор присваивания

Переменная — это имя, по которому можно обратиться к значению, хранящемуся в памяти. Можно представлять переменную как помеченную коробку, в которой лежат данные.

Синтаксис присваивания:

имя_переменной = значение
Примеры:
name = "Alice"       # строка
age = 20             # целое число
pi = 3.14159         # вещественное число
is_student = True    # логическое значение
Важно: знак = в программировании означает присваивание, а не равенство. Имя переменной всегда должно быть слева:

a = 23    # Правильно: присвоить 23 переменной a
23 = a    # Неправильно: нельзя присвоить значение литералу

Правила именования переменных

  1. Имя должно начинаться с буквы или символа подчёркивания (_).
  2. Может содержать буквы, цифры и символы подчёркивания.
  3. Регистрозависимо (name ≠ Name ≠ NAME).
  4. Нельзя использовать ключевые слова Python (if, for, while и т.д.).

Хорошие имена:

user_name = "Bob"
total_count = 42
_max_value = 100

Плохие имена:

2nd_place = "silver"   # нельзя начинать с цифры
user-name = "Bob"      # дефис не допускается
if = 5                 # if — ключевое слово

Принято использовать «змеиный стиль» (snake_case): составные имена записываются строчными буквами, слова разделяются подчёркиванием.

long_long_name = "описательное имя переменной"
user_age = 25
total_price = 99.99

Оператор присваивания

Оператор = связывает имя переменной с объектом в памяти:

x = 500
y = 300
x = x - 200   # x теперь ссылается на новый объект (300)
pi = 3.14159
name = "Alice"
is_student = True
Пример: x = x - 200 — это не противоречие. Python сначала вычисляет правую часть: 500 - 200 = 300. Затем связывает x с новым значением. Старый объект (500) становится неиспользуемым и будет удалён автоматически.

Моржовый оператор (Python 3.8+)

В Python 3.8 появился оператор присваивания-выражения, также известный как «моржовый оператор» (walrus operator), потому что := напоминает глаза и клыки моржа.

имя_переменной := выражение

Это позволяет компактнее записывать некоторые вычисления и использовать значения, полученные при проверке условий, без повторного вычисления.

Пример:
x = (y := 10) * 2

В результате y ссылается на 10, x — на 100.

Важно: в большинстве случаев выражение с моржовым оператором нужно заключать в скобки.

y := 10    # Синтаксическая ошибка
(y := 10)  # Правильно
Интересный факт: моржовый оператор был одним из самых спорных добавлений в Python. Гвидо ван Россум, создатель языка, был настолько разочарован дебатами, что временно сложил с себя полномочия «великодушного пожизненного диктатора» (BDFL). В итоге функция была одобрена и стала стандартной частью Python.

4. Как данные хранятся в памяти

Прежде чем использовать любое значение, Python преобразует его в объект PyObject. В CPython (эталонной реализации Python) каждый объект — это структура PyObject.

Для простоты можно представлять PyObject как совокупность трёх значений:

  1. type — тип данных (int, str и т.д.);
  2. value — собственно значение;
  3. refcount — количество ссылок на этот объект.
Зачем нужен refcount? Python использует его для автоматического управления памятью. Когда refcount становится равным нулю, объект удаляется. Именно поэтому в Python не нужно вызывать free() или delete, как в C++.
Пример: как работает print("Hello, world!")

Когда Python выполняет:

print("Hello, world!")

Сначала создаётся объект типа str со значением "Hello, world!" и refcount = 0. Затем этот объект передаётся функции print().

type value refcount
str «Hello, world!» 0

Все операторы и функции Python работают именно с такими структурами PyObject.

Как выглядит присваивание в памяти

Проследим выполнение простой программы:

x = 500
y = 300
x = x - 200

Шаг 1: x = 500 — Python создаёт объект int со значением 500. Имя x привязывается к этому объекту.

Шаг 2: y = 300 — создаётся объект int со значением 300. Имя y привязывается к нему.

Шаг 3: x = x - 200:

  • Python вычисляет правую часть: 500 - 200 = 300.
  • Объект int со значением 300 уже существует (на него ссылается y).
  • x привязывается к тому же объекту, что и y.
  • refcount объекта 300 становится равным 2.
  • refcount объекта 500 падает до 0.
  • Объект 500 автоматически удаляется сборщиком мусора.
Ключевая идея: в Python переменные — это ссылки на объекты. Несколько переменных могут ссылаться на один и тот же объект. Объекты существуют в памяти независимо от переменных.
Интересный факт: Python использует подсчёт ссылок плюс циклический сборщик мусора. Подсчёт ссылок обрабатывает общий случай; циклический сборщик обрабатывает циклические ссылки. Именно поэтому в Python редко бывают утечки памяти — огромное преимущество по сравнению с C или C++.

5. Типы данных и типизация

В Python есть несколько базовых типов данных:

Тип Описание Пример
int Целое число 42, -7, 0
float Вещественное число 3.14, -0.5, 2.0
str Строка (текст) «hello», ‘world’
bool Логическое значение True, False

Проверить тип значения можно функцией type():

print(type(42))      # <class 'int'>
print(type(3.14))    # <class 'float'>
print(type("Hi"))    # <class 'str'>
print(type(True))    # <class 'bool'>

Изменяемые и неизменяемые типы

Типы данных можно условно разделить на изменяемые и неизменяемые. Понимание того, к какому классу принадлежит тип, очень важно при работе со значениями.

Неизменяемые типы Изменяемые типы
bool list
int set
float dict
tuple
str
frozenset
range

Привычные типы (int, float, str) являются неизменяемыми. Это означает, что при попытке изменения значения создаётся новый объект, а старый остаётся неизменным.

Динамическая и строгая типизация

Python — динамически типизированный язык: не нужно объявлять тип переменной, он определяется по значению:

x = 5          # x — целое число
x = "hello"    # теперь x — строка
x = 3.14       # теперь x — вещественное число

При этом Python — строго типизированный язык: несовместимые операции вызывают ошибку:

s = '2134' + '123'       # OK: str + str = str
s = 1234 + 12            # OK: int + int = int
s = 1234.4321 + 12.21    # OK: float + float = float
s = 1234.4321 + 12       # OK: float + int = float
s = True + True          # OK: bool + bool = int (2)
s = '123' + 12           # ОШИБКА! str + int
Интересный факт: True и False являются подклассами int. True + True == 2.

Строки

Строки создаются с помощью одинарных или двойных кавычек:

message1 = 'Hello'
message2 = "World"
message3 = "She said 'Hello'"
message4 = 'She said "Hello"'

Многострочные строки используют тройные кавычки:

poem = """Roses are red,
Violets are blue,
Python is fun,
And so are you!"""

Основные операции со строками:

greeting = "Hello"
name = "Alice"
 
print(greeting + " " + name)   # Конкатенация: Hello Alice
print("Ha" * 3)                 # Повторение: HaHaHa
print(greeting[0])              # Индексация: H
print(len(greeting))            # Длина: 5

Логические значения

Логический тип bool принимает значения True или False:

is_sunny = True
is_raining = False
print(is_sunny == True)   # True

Логические значения часто являются результатом сравнений:

print(5 > 3)      # True
print(5 == 3)     # False
print(5 != 3)     # True
Интересный факт: в Python True эквивалентно 1, а False — 0:

print(True + True)   # 2

6. Преобразование типов

Python предоставляет встроенные функции для преобразования между типами:

Функция Преобразует из Примечание
bool(x) любой Нулевое значение → False; ненулевое → True; bool(0) == False
float(x) int, float, str Строка должна быть преобразуема в число
int(x) int, float, str Для строк можно указать основание системы счисления; для чисел выделяет целую часть
str(x) любой Строковое представление значения
Примеры:
print(bool(0))        # False
print(bool(42))       # True
print(bool(""))       # False
print(bool("hello"))  # True
 
print(float(42))      # 42.0
print(float("3.14"))  # 3.14
print(float(True))    # 1.0
 
print(int(3.99))      # 3 (отбрасывает дробную часть, не округляет)
print(int("42"))      # 42
print(int("0x1A", 16))  # 26 (указано основание)
 
print(str(42))        # "42"
print(str(3.14))      # "3.14"
print(str(True))      # "True"

Исправление ошибки типов

Вернёмся к ошибке из предыдущего раздела и исправим её:

# НЕПРАВИЛЬНО:
# s = '123' + 12  # TypeError
 
# ИСПРАВЛЕНИЕ 1: преобразовать целое число в строку
s = '123' + str(12)   # '12312' (конкатенация строк)
 
# ИСПРАВЛЕНИЕ 2: преобразовать строку в целое число
s = int('123') + 12   # 135 (сложение целых чисел)
Обратите внимание: ни один из подходов не является «неправильным» — всё зависит от того, что вы хотите получить. Вы хотите объединить текстовые представления или выполнить арифметику? Всегда задавайте себе вопрос о намерении.

Преобразование строки в целое число с указанием основания

По умолчанию int() интерпретирует строку как десятичное число (основание 10):

print(int('10232'))   # 10232

Однако можно преобразовывать строки, представляющие числа в других системах счисления, передав второй аргумент — основание:

int(s, b)  # s — строковое представление числа в системе счисления b

Цифры после 9 — это буквы английского алфавита a–z в любом регистре. Поддерживаются основания от 2 до 36.

Пример:
x = int('1A20', 13)   # 1A20 в системе с основанием 13 = 3913 в десятичной

Проверка:

1 × 13³ + 10 × 13² + 2 × 13¹ + 0 × 13⁰
= 2197 + 1690 + 26 + 0
= 3913
Интересный факт: это полезно при работе с числами в других системах счисления — например, шестнадцатеричные цветовые коды в HTML имеют основание 16. Python делает преобразование тривиальным.

Преобразование целого числа в другие системы счисления

Способ 1: f-строки (Python 3.6+)

x = 223
print(f'{x:b}')   # '11011111' (двоичная)
print(f'{x:o}')   # '337' (восьмеричная)
print(f'{x:x}')   # 'df' (шестнадцатеричная, нижний регистр)
print(f'{x:X}')   # 'DF' (шестнадцатеричная, верхний регистр)

Способ 2: встроенные функции

x = 223
print(bin(x))   # '0b11011111'
print(oct(x))   # '0o337'
print(hex(x))   # '0xdf'

Ключевые моменты:

  • Результат всегда является строкой.
  • Встроенные функции добавляют префикс: 0b (двоичная), 0o (восьмеричная), 0x (шестнадцатеричная).
  • f-строки не включают префикс.
Пример — преобразование 1443 в шестнадцатеричную:
var = 1443
print(f'{var:x}')   # '5a3'
print(hex(var))     # '0x5a3'
Важно: эти методы работают только для оснований 2, 8 и 16. Для других оснований (например, 3, 5, 7 или любого основания > 16) нужно писать собственный алгоритм преобразования.

Преобразование пользовательского ввода

age_str = input("Enter your age: ")   # "20" (строка)
age = int(age_str)                     # 20 (целое число)
print("Next year you'll be", age + 1)  # Работает!

Частые ошибки:

# int("3.14")  # ОШИБКА: нельзя преобразовать строку с десятичной точкой в int
# int("abc")   # ОШИБКА: нельзя преобразовать нечисловую строку
# int("42.0")  # ОШИБКА: нельзя напрямую преобразовать строку с плавающей точкой в int

Безопасное преобразование:

# Преобразовать строку с плавающей точкой в int через float
value = int(float("3.14"))   # 3

7. Арифметические операции

Базовые арифметические операции

Оператор Описание Пример Результат
+ Сложение 3 + 2 5
- Вычитание 3 — 2 1
* Умножение 3 * 2 6
/ Деление (вещественное) 3 / 2 1.5
** Возведение в степень 3 ** 2 9
// Целочисленное деление 3 // 2 1
% Остаток от деления 3 % 2 1
Примеры:
a = 10
b = 3
print(a + b)    # 13
print(a - b)    # 7
print(a * b)    # 30
print(a / b)    # 3.3333333333333335
print(a // b)   # 3
print(a % b)    # 1
print(a ** b)   # 1000

Приоритет операций

Python следует стандартному математическому приоритету:

  1. Скобки ()
  2. Возведение в степень **
  3. Умножение, деление, целочисленное деление, остаток: *, /, //, %
  4. Сложение, вычитание: +, -
Примеры:
print(2 + 3 * 4)     # 14 (сначала 3*4, затем +2)
print((2 + 3) * 4)   # 20 (сначала скобки)
print(2 ** 3 ** 2)   # 512 (2^(3^2) = 2^9, правоассоциативность)

Целочисленное деление и остаток

Эти два оператора особенно полезны при работе с цифрами:

  • // — целочисленное деление, отбрасывает остаток;
  • % — возвращает остаток.
print(17 // 5)   # 3
print(17 % 5)    # 2
print(17 / 5)    # 3.4
Важно: в Python знак остатка совпадает со знаком делителя:

print(-12 // 7)   # -2
print(-12 % 7)    # 2
print(13 // -6)   # -3
print(13 % -6)    # -5

Сокращённая запись

Для изменения значения переменной относительно текущего можно использовать сокращённые операторы:

Операция Обозначение Эквивалент
Сложение a += e a = a + e
Вычитание a -= e a = a - e
Умножение a *= e a = a * e
Деление a /= e a = a / e
Целочисленное деление a //= e a = a // e
Остаток от деления a %= e a = a % e
a = 10
a += 2   # a = 12
a *= 3   # a = 36
a /= 2   # a = 18.0
print(a)

8. Работа с цифрами числа

Если мы работаем в 10-й системе счисления, любое число можно разобрать на цифры, используя степени 10 и операции // и %.

Стандартный вид числа:

123 = 1 × 100 + 2 × 10 + 3

Таким образом, можно получить отдельные цифры числа:

  • для получения сотен из трёхзначного числа нужно вычислить частное от деления на 100;
  • для получения десятков — вычислить остаток от деления на 100, а затем частное от деления на 10;
  • для получения единиц — взять остаток от деления на 10.
Пример: дано трёхзначное целое число. Вывести сумму его цифр. Убедитесь, что программа корректно работает с отрицательными числами.
begin
  var a := abs(readinteger); // модуль числа
  println(a div 100 + (a div 10) mod 10 + a mod 10);
end.

На Python это будет выглядеть так:

n = abs(int(input("Введите трёхзначное число: ")))
s = n // 100 + (n // 10) % 10 + n % 10
print("Сумма цифр:", s)
Пример: извлечение цифр из числа 754
n = 754
last = n % 10            # 4
middle = (n // 10) % 10  # 5
first = n // 100         # 7
print(first, middle, last)  # 7 5 4

Общая формула для k-й цифры (справа, нумерация с 0):

digit = (n // 10**k) % 10

9. Множественное присваивание

Python синтаксически поддерживает возможность задавать значения нескольких переменных с помощью одного оператора присваивания.

a, b = value1, value2
Пример:
a, b = 1000, 450 + 550

После этой строки a ссылается на 1000, b — на 1000 (так как 450 + 550 = 1000).

Интересный факт: при запуске такого кода в REPL оба имени a и b будут ссылаться на один и тот же объект. Это потому, что Python сначала вычисляет правую часть, затем присваивает одно и то же значение обоим именам.

Существует также альтернативный способ присвоить один и тот же объект нескольким переменным:

a = b = 1000

В этом случае создаётся один объект со значением 1000, и его адрес записывается в обе переменные.

Практическое применение: обмен значениями

Множественное присваивание делает обмен значениями переменных тривиальным в Python:

a = 5
b = 10
a, b = b, a   # Обмен!
print(a)      # 10
print(b)      # 5
Интересный факт: в большинстве языков для обмена двух значений нужна временная переменная. В Python это одна строка. Это прямое следствие того, как работает присваивание в Python — правая часть сначала вычисляется как кортеж, затем распаковывается.

10. PEP 8 и комментарии

Что такое PEP?

PEP (Python Enhancement Proposal) — документы, описывающие новые возможности или руководства по стилю для Python.

PEP 8 — официальное руководство по стилю кода на Python.

Ключевые рекомендации PEP 8

1. Отступы: используйте 4 пробела для отступа (не табуляцию).

# Правильно
if x > 0:
    print("Positive")
 
# Неправильно (неверный отступ)
if x > 0:
print("Positive")

2. Длина строки: максимум 79 символов.

3. Именование:

  • Переменные и функции: lower_case_with_underscores (snake_case).
  • Классы: CamelCase.
# Правильно
user_name = "Alice"
def calculate_average():
    pass
 
# Неправильно
userName = "Alice"          # не snake_case
def CalculateAverage():     # не snake_case для функций
    pass

4. Пробелы после запятых:

# Правильно
print("PEP8", "Rocks!")
 
# Неправильно
print("PEP8","Rocks!")
print("PEP8" , "Rocks!")

5. Без пробелов перед скобками в вызовах функций:

# Правильно
print("Hello")
 
# Неправильно
print ("Hello")

6. Без пробелов вокруг = для именованных аргументов:

# Правильно
print("Hello", end="!")
 
# Неправильно
print("Hello", end = "!")

Комментарии

Комментарии — это текст в коде, который Python игнорирует. Они предназначены для людей.

Однострочные комментарии:

# Это комментарий
print("Hello")  # Это встроенный комментарий

Многострочные комментарии (docstrings):

"""
Это многострочный комментарий.
Он может занимать несколько строк.
Полезен для объяснения сложного кода.
"""
print("Hello")

Когда использовать комментарии:

  • Объясняйте почему код что-то делает, а не что он делает.
  • Документируйте сложную логику.
  • Оставляйте заметки для себя или других разработчиков.
Пример хорошего комментирования:
# Вычисляем площадь круга
# Формула: area = π * r²
radius = float(input("Введите радиус: "))
pi = 3.14159
area = pi * radius ** 2
print("Площадь:", area)



Лабораторные работы

В этом разделе представлены лабораторные работы с решениями. Попробуйте сначала решить задачу самостоятельно, а затем откройте решение для проверки.

Лабораторная работа 1. Hello, World!
Задача: напишите программу, которая выводит на экран строку Hello, World!.
Показать решение
print("Hello, World!")

Пример вывода:

Hello, World!

Пошаговое объяснение:

  1. print() — встроенная функция, которая выводит данные на экран.
  2. Текст в кавычках "Hello, World!" — это строка.
  3. При запуске программы текст появляется на экране.

Лабораторная работа 2. Персонализированное приветствие
Задача: напишите программу, которая запрашивает имя пользователя и выводит персонализированное приветствие.
Показать решение
name = input("Введите ваше имя: ")
print("Привет,", name + "! Добро пожаловать в Python!")

Пример работы:

Введите ваше имя: Алиса
Привет, Алиса! Добро пожаловать в Python!

Пошаговое объяснение:

  1. input("Введите ваше имя: ") выводит подсказку и ждёт ввода пользователя.
  2. Введённый текст сохраняется в переменной name.
  3. print() выводит приветствие с именем пользователя.
  4. Оператор + соединяет (конкатенирует) строки.

Лабораторная работа 3. Сумма двух чисел
Задача: напишите программу, которая считывает два целых числа и выводит их сумму.
Показать решение
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
sum_result = num1 + num2
print("Сумма:", sum_result)

Пример работы:

Введите первое число: 5
Введите второе число: 7
Сумма: 12

Пошаговое объяснение:

  1. input() считывает строку от пользователя.
  2. int() преобразует строку в целое число.
  3. Два числа сохраняются в num1 и num2.
  4. num1 + num2 вычисляет сумму.
  5. Результат сохраняется в sum_result и выводится.
Частая ошибка: забыть преобразовать ввод через int():

num1 = input("Первое число: ")   # "5"
num2 = input("Второе число: ")   # "7"
print(num1 + num2)                # "57", а не 12!

Лабораторная работа 4. Арифметические операции
Задача: напишите программу, которая считывает два числа и выводит их сумму, разность, произведение и частное.
Показать решение
a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))
print(a, "+", b, "=", a + b)
print(a, "-", b, "=", a - b)
print(a, "*", b, "=", a * b)
print(a, "/", b, "=", a / b)

Пример работы:

Введите первое число: 10
Введите второе число: 3
10.0 + 3.0 = 13.0
10.0 - 3.0 = 7.0
10.0 * 3.0 = 30.0
10.0 / 3.0 = 3.3333333333333335

Пошаговое объяснение:

  1. float() используется для работы с десятичными числами.
  2. Каждая арифметическая операция выполняется и выводится.
  3. print() с несколькими аргументами автоматически ставит пробелы между ними.

Лабораторная работа 5. Извлечение цифр
Задача: напишите программу, которая считывает трёхзначное число и выводит его цифры в обратном порядке.
Показать решение
n = int(input("Введите трёхзначное число: "))
 
# Извлекаем цифры
last = n % 10
middle = (n // 10) % 10
first = n // 100
 
print("Цифры в обратном порядке:", last, middle, first)

Пример работы:

Введите трёхзначное число: 754
Цифры в обратном порядке: 4 5 7

Пошаговое объяснение:

  1. n % 10 даёт последнюю цифру (4).
  2. (n // 10) % 10 убирает последнюю цифру и берёт новую последнюю (5).
  3. n // 100 убирает две последние цифры (7).
  4. Цифры выводятся в обратном порядке.

Проверка: для n = 754: last = 4, middle = 5, first = 7.

Лабораторная работа 6. Конвертер температуры
Задача: напишите программу, которая переводит температуру из градусов Цельсия в градусы Фаренгейта.

Формула: F = C × 9 / 5 + 32

Показать решение
celsius = float(input("Введите температуру в Цельсиях: "))
fahrenheit = celsius * 9 / 5 + 32
print(f"{celsius:.2f}°C = {fahrenheit:.2f}°F")

Пример работы:

Введите температуру в Цельсиях: 25
25.00°C = 77.00°F

Пошаговое объяснение:

  1. Температура считывается как float (для обработки десятичных значений).
  2. Применяется формула преобразования.
  3. Оба значения выводятся с двумя знаками после запятой с помощью f-строки.

Лабораторная работа 7. Обмен значениями
Задача: напишите программу, которая меняет значения двух переменных местами.
Показать решение
a = 5
b = 10
print("До обмена: a =", a, ", b =", b)
 
# Обмен с использованием временной переменной
temp = a
a = b
b = temp
 
print("После обмена: a =", a, ", b =", b)

Пример вывода:

До обмена: a = 5 , b = 10
После обмена: a = 10 , b = 5

Альтернатива (специфично для Python):

a = 5
b = 10
print("До обмена: a =", a, ", b =", b)
 
# Элегантный обмен в Python
a, b = b, a
 
print("После обмена: a =", a, ", b =", b)

Пошаговое объяснение (с temp):

  1. temp = a сохраняет оригинальное значение a.
  2. a = b присваивает a значение b.
  3. b = temp присваивает b сохранённое значение.

Обмен в Python: a, b = b, a создаёт кортеж и распаковывает его — это предпочтительный способ в Python.



Самостоятельные задания

Решите следующие задачи самостоятельно. Для проверки используйте примеры вывода.

Задание 1. Возраст
Условие: напишите программу, которая запрашивает год рождения пользователя и вычисляет его возраст (считайте, что текущий год — 2026).

Пример вывода:

Введите год рождения: 2000
Вам 26 лет.

Подсказка: используйте int() для преобразования ввода.

Задание 2. Площадь круга
Условие: напишите программу, которая считывает радиус круга и вычисляет его площадь.

Формула: Площадь = π × r²

Используйте π = 3.14159.

Пример вывода:

Введите радиус: 5
Площадь круга: 78.53975

Задание 3. Сумма и произведение цифр
Условие: напишите программу, которая считывает трёхзначное число и вычисляет сумму и произведение его цифр.

Пример вывода:

Введите трёхзначное число: 423
Сумма цифр: 9
Произведение цифр: 24

Подсказка: используйте % и // для извлечения цифр.

Задание 4. Секунды в минуты и секунды
Условие: напишите программу, которая переводит заданное количество секунд в минуты и оставшиеся секунды.

Пример вывода:

Введите количество секунд: 125
125 секунд = 2 минуты и 5 секунд

Подсказка: используйте // для минут и % для оставшихся секунд.

Задание 5. Обратный порядок цифр
Условие: напишите программу, которая считывает четырёхзначное число и выводит его в обратном порядке.

Пример вывода:

Введите четырёхзначное число: 1234
Число в обратном порядке: 4321

Подсказка: извлеките каждую цифру с помощью % и //.

Задание 6. Обмен без временной переменной
Условие: напишите программу, которая меняет значения двух переменных местами без использования временной переменной и без множественного присваивания.

Пример вывода:

Введите первое число: 5
Введите второе число: 10
До обмена: a = 5, b = 10
После обмена: a = 10, b = 5

Подсказка: используйте арифметические операции + и -.



Словарь Python-объектов

Ниже приведён справочник по основным встроенным функциям, типам данных и операторам Python, рассмотренным в этом уроке. Каждый пункт содержит ссылку на соответствующий раздел теории, лабораторную работу или задание.

Как пользоваться: щёлкните по названию объекта — откроется соответствующий раздел теории, где этот объект подробно разобран с примерами.

Ввод и вывод I/O

  • print()
    Выводит данные на экран. Поддерживает аргументы sep и end.
  • input()
    Считывает строку от пользователя. Всегда возвращает str.
  • print(…, sep=»…»)
    Задаёт разделитель между аргументами (по умолчанию — пробел).
  • print(…, end=»…»)
    Задаёт завершающий символ (по умолчанию — перевод строки \n).

Встроенные функции built-in

  • int(x)
    Преобразует значение в целое число. Для строк можно указать основание: int(s, b).
  • float(x)
    Преобразует значение в вещественное число.
  • str(x)
    Возвращает строковое представление значения.
  • bool(x)
    Логическое преобразование: нулевое значение → False, ненулевое → True.
  • type(x)
    Возвращает тип объекта.
  • bin(x)
    Возвращает строку с двоичным представлением числа (с префиксом 0b).
  • oct(x)
    Возвращает строку с восьмеричным представлением числа (с префиксом 0o).
  • hex(x)
    Возвращает строку с шестнадцатеричным представлением числа (с префиксом 0x).
  • len(s)
    Возвращает длину строки или последовательности.
  • id(x)
    Возвращает адрес объекта в памяти (используется для проверки идентичности).
  • abs(x)
    Возвращает модуль числа.

Типы данных types

  • int
    Целое число: 42, -7, 0.
  • float
    Вещественное число: 3.14, -0.5, 2.0.
  • str
    Строка (текст): «hello», ‘world’.
  • bool
    Логическое значение: True или False.

Арифметические операторы arithmetic

  • +
    Сложение чисел или конкатенация строк.
  • —
    Вычитание.
  • *
    Умножение чисел или повторение строки.
  • /
    Деление (всегда возвращает float).
  • //
    Целочисленное деление (отбрасывает остаток).
  • %
    Остаток от деления.
  • **
    Возведение в степень (правоассоциативный оператор).

Операторы сравнения comparison

  • ==
    Равенство.
  • !=
    Неравенство.
  • >
    Больше.
  • <
    Меньше.
  • >=
    Больше или равно.
  • <=
    Меньше или равно.

Присваивание assignment

  • =
    Присваивание значения переменной.
  • a, b = 1, 2
    Множественное присваивание.
  • a = b = 1000
    Цепочка присваиваний (один объект — несколько имён).
  • a, b = b, a
    Обмен значениями одной строкой.
  • :=
    Моржовый оператор (assignment expression, Python 3.8+).
  • +=, -=, *=, /=, //=, %=
    Сокращённые операторы изменения значения.

Методы строк str methods

  • s.upper()
    Возвращает копию строки в верхнем регистре.
  • s.lower()
    Возвращает копию строки в нижнем регистре.
  • s.split(sep)
    Разбивает строку по разделителю и возвращает список подстрок.
  • s.join(iterable)
    Объединяет последовательность строк через разделитель s.
  • s.replace(old, new)
    Заменяет подстроки в строке.
  • s.strip()
    Удаляет пробельные символы с концов строки.

Работа с цифрами digits

  • n % 10
    Получить последнюю (младшую) цифру числа.
  • n // 10
    Отбросить последнюю цифру числа.
  • n // 100
    Получить сотни трёхзначного числа.
  • (n // 10) % 10
    Получить десятки трёхзначного числа.
  • (n // 10**k) % 10
    Общая формула для k-й цифры справа (нумерация с 0).

Стиль и оформление style

  • snake_case
    Стиль именования переменных и функций: user_name, total_price.
  • CamelCase
    Стиль именования классов: MyClass, UserAccount.
  • # комментарий
    Однострочный комментарий.
  • «»»docstring»»»
    Многострочный комментарий (docstring) для документации функций.
  • PEP 8
    Официальное руководство по стилю кода Python.

Память и объекты memory

Лабораторные работы practice

Самостоятельные задания tasks

  • Задание 1
    Вычисление возраста по году рождения.
  • Задание 2
    Площадь круга по радиусу.
  • Задание 3
    Сумма и произведение цифр трёхзначного числа.
  • Задание 4
    Перевод секунд в минуты и секунды.
  • Задание 5
    Обратный порядок цифр четырёхзначного числа.
  • Задание 6
    Обмен значений без временной переменной.
Совет: держите эту страницу открытой во время выполнения лабораторных и самостоятельных заданий — она поможет быстро найти нужную функцию или оператор.