Урок 2. Условный оператор и работа с цифрами числа в Python

Работа с цифрами числа и условный оператор в Python



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

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

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

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

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

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

  • input()
    Считывает строку от пользователя. Всегда возвращает str.
  • int(input())
    Считывает целое число с клавиатуры.
  • float(input())
    Считывает вещественное число с клавиатуры.
  • print(a, b)
    Выводит значения через пробел.

Условный оператор if

Логические операторы logic

  • and
    Конъюнкция: истинно, когда оба операнда истинны.
  • or
    Дизъюнкция: истинно, если хотя бы один операнд истинен.
  • not
    Отрицание: инвертирует логическое значение.
  • Оператор in
    Проверка вхождения символа в строку или значения в последовательность.

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

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

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



Теория

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

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

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

123 = 1 × 100 + 2 × 10 + 3

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

  • для получения сотен из трёхзначного числа нужно вычислить частное от деления на 100;
  • для получения десятков — вычислить остаток от деления на 100, а затем частное от деления на 10;
  • для получения единиц — взять остаток от деления на 10.
Пример: дано трёхзначное целое число. Вывести сумму его цифр.
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

2. Стандартная форма числа

Стандартная форма — это представление числа в виде суммы произведений его цифр на соответствующие степени основания системы счисления (обычно 10).

1234 = 1 × 10³ + 2 × 10² + 3 × 10¹ + 4 × 10⁰

Обратная задача — собрать число из отдельных цифр. Если известны цифры a (десятки) и b (единицы), то:

число = a * 10 + b
Пример: составить двузначное число из двух введённых цифр.
a = int(input("Введите первую цифру: "))  # десятки
b = int(input("Введите вторую цифру: "))  # единицы
number = a * 10 + b
print("Полученное число:", number)

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

Введите первую цифру: 3
Введите вторую цифру: 5
Полученное число: 35

Проверка:

3, 5 => 35
7, 0 => 70
0, 4 => 4

3. Ввод и вывод данных

Для коммуникации с программой при её запуске используют специальные функции — ввода и вывода.

Ввод значения через терминал. Для этого в Python есть функция input().

Важно: результатом работы функции input() является строковое значение. Поэтому если нужно ввести число, считанное строковое значение необходимо преобразовать с помощью int() или float().
# Ввод строки из терминала
inp = input()
 
# Преобразование строки в целое число
x = int(inp)

Эту же операцию можно выполнить в одну строку:

x = int(input())

Для интерактивности можно передать input() приглашение:

x = int(input('Введите x: '))

Вывод значений на экран. Для этого используется функция print().

print(a, b)
Пример: программа для нахождения корня линейного уравнения kx + b = 0.
# ввод коэффициента k
k = float(input('Введите k:'))
# ввод коэффициента b
b = float(input('Введите b:'))
# вычисление корня
x = -b / k
# вывод корня на экран
print('x =', x)

4. Условный оператор. Короткая форма (if)

Условный оператор — конструкция, которая позволяет выбрать один из нескольких вариантов дальнейшего выполнения алгоритма.

Короткая форма:

if условие:
    оператор  # выполнится, если условие истинно
Ключевые моменты:

  • После условия ставится : (двоеточие).
  • Тело оператора выделяется отступом (4 пробела по PEP 8).
  • Блок выполняется только если условие истинно.
Пример: проверка положительности числа.
number = 5
if number > 0:
    print("Число положительное")
Пример: проверка ответа пользователя.
print("Какой язык программирования мы изучаем?")
answer = input()
 
if answer == "Python":
    print("Верно! Мы изучаем Python =)")
    print("Python — отличный язык!")

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

Какой язык программирования мы изучаем?
Python
Верно! Мы изучаем Python =)
Python — отличный язык!

5. Полная форма (if-else)

Полная форма условного оператора позволяет выбрать один из двух вариантов:

if условие:
    оператор-1  # выполнится, если условие истинно
else:
    оператор-2  # выполнится, если условие ложно
Пример: определение знака числа.
number = -3
if number > 0:
    print("Положительное")
else:
    print("Отрицательное или ноль")
Пример: проверка ответа с двумя ветками.
print("Какой язык программирования мы изучаем?")
answer = input()
 
if answer == "Python":
    print("Верно! Мы изучаем Python =)")
else:
    print("Не совсем! Мы изучаем Python.")

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

Какой язык программирования мы изучаем?
Java
Не совсем! Мы изучаем Python.

6. Множественный выбор (elif)

Когда вариантов больше двух, используют конструкцию elif:

if условие1:
    блок-команд-1
elif условие2:
    блок-команд-2
elif условие3:
    блок-команд-3
else:
    блок-команд-N  # если ни одно условие не истинно
Важно: условия проверяются в том порядке, в котором они записаны. Как только одно из них оказывается истинным — выполняется соответствующий блок, и остальные условия пропускаются. Поэтому порядок условий имеет значение.
Пример: определение знака числа.
number = int(input())
if number > 0:
    print("Положительное")
elif number < 0:
    print("Отрицательное")
else:
    print("Ноль")
Пример: классификация оценки.
grade = int(input("Введите балл: "))
if grade >= 90:
    print("5 - Отлично")
elif grade >= 80:
    print("4 - Хорошо")
elif grade >= 70:
    print("3 - Удовлетворительно")
elif grade >= 60:
    print("2 - Плохо")
else:
    print("1 - Неудовлетворительно")

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

Введите балл: 85
4 - Хорошо
Совет: условия в цепочке elif располагайте от самого специфичного к самому общему. Используйте elif вместо вложенных if/else, чтобы код оставался плоским и читаемым.

7. Блоки команд и отступы

В Python доступно два варианта оформления блоков команд в составных операторах, в том числе и в условном операторе.

Вариант 1: на той же строке, что и ключевое слово, через точку с запятой.

if x % 2 == 0: y = y + x; z = 10
else: y = 0; z = 13

Вариант 2: каждая команда с новой строки с отступом на 1 уровень больше.

if x % 2 == 0:
    y = y + x
    z = 10
else:
    y = 0
    z = 13

Второй способ считается общепринятым и соответствует рекомендациям PEP 8.

Идея отступов: все блоки команд в составном операторе являются вложенными. Чтобы показать уровень вложенности, для блока команд увеличивают отступ относительно ключевого слова. Все команды одного уровня вложенности должны иметь одинаковый отступ.
Пример: вложенные условные операторы с одинаковыми отступами.
if x % 2 == 0:
    y = y + x
    if y > 5:
        y = 6
    if x // 3 == 4:
        y = 0
        if x > 10:
            z = 22
Важно: не следует ставить точку с запятой перед else.

8. Тернарный условный оператор

Для удобства в некоторых случаях используют тернарную условную операцию. Обычно она используется, когда в зависимости от условия устанавливается значение конкретной переменной.

Обычный условный оператор:

if y > 10:
    x = 5
else:
    x = y + 3

С помощью тернарной операции:

x = 5 if y > 10 else y + 3
Пример: определение лучшего ученика.
student_1 = 5
student_2 = 2
 
excellent = "первый ученик" if student_1 > student_2 else "второй ученик"
print(excellent)  # первый ученик
Совет: тернарную операцию удобно применять, когда условие небольшое, а выражения по обе стороны простые. Иначе анализ становится сложнее и увеличивает сложность поддержки кода.

9. Логические операторы (and, or, not)

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

Оператор and (конъюнкция)

A B A and B
False False False
False True False
True False False
True True True
age = int(input("возраст? "))
grade = int(input("балл? "))
print("Доступ разрешён:", age >= 12 and grade >= 7)

Идея: «оба должны быть истинными». Удобно для проверки нескольких требований одновременно.

Оператор or (дизъюнкция)

A B A or B
False False False
False True True
True False True
True True True
city = "Москва"
print("Доступ разрешён:", city == "Москва" or city == "Уфа")

Идея: «хотя бы один должен быть истинным». Удобно для проверки нескольких допустимых вариантов.

Оператор not (отрицание)

A not A
False True
True False
age = 8
print("Доступ разрешён:", not (age < 12))

Идея: «противоположное значение».

Типичная ошибка: путать and и or.

# НЕПРАВИЛЬНО — всегда истинно, если x > 1 или x < 100
if x > 1 or x < 100:
    print("В диапазоне")
 
# ПРАВИЛЬНО
if x > 1 and x < 100:
    print("В диапазоне")
Неполные условия:

# НЕПРАВИЛЬНО
if age >= 7 and <= 9:
    print("Ребёнок")
 
# ПРАВИЛЬНО
if age >= 7 and age <= 9:
    print("Ребёнок")
 
# ЛУЧШЕ — цепочка сравнения
if 7 <= age <= 9:
    print("Ребёнок")
Интересный факт: цепочки сравнения вида a < b < c — уникальная особенность Python, во многих языках такая запись не поддерживается.

10. Оператор in

Оператор in позволяет проверить, входит ли элемент (или подстрока) в последовательность. Это удобная альтернатива длинным цепочкам or.

Без in:

s = input()
if s == 's' or s == 't' or s == 'u' or s == 'd' or s == 'y':
    print('ДА')

С in:

s = input()
if len(s) == 1 and s in 'study':
    print('ДА')

Оператор in отлично подходит для проверки символа на принадлежность к строке или значения — к последовательности.

11. Операторы сравнения и цепочки

Оператор Описание Пример
== Равно x == 5
!= Не равно x != 5
> Больше x > 3
< Меньше x < 3
>= Больше или равно x >= 5
<= Меньше или равно x <= 5
Важно: не путайте = (присваивание) и == (сравнение).

# ПРИСВАИВАНИЕ — присваивает значение
age = 25
 
# СРАВНЕНИЕ — проверяет равенство
if age == 25:
    print("Вам 25")
 
# ОШИБКА! Это присваивание, а не сравнение
if age = 25:  # SyntaxError!
    print("Это не сработает")

Цепочки сравнения

В Python операторы сравнения можно объединять в цепочки:

age = int(input())
if 3 <= age <= 6:
    print('Вы ребёнок')

Также можно проверить равенство сразу трёх переменных:

if a == b == c:
    print('числа равны')
else:
    print('числа не равны')



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

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

Лабораторная работа 1. Проверка на чётность одного числа
Задача: вводится целое число. Проверить истинность высказывания: число является чётным.
Показать решение
n = int(input("введите целое число >>> "))
print("Число чётное:", n % 2 == 0)

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

введите целое число >>> 9
Число чётное: False

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

  1. Считываем целое число с клавиатуры.
  2. Вычисляем остаток от деления на 2: если он равен 0 — число чётное.
  3. Выводим результат логического выражения n % 2 == 0.

Лабораторная работа 2. Хотя бы одно из двух чисел чётное
Задача: вводятся два целых числа. Проверить истинность высказывания: хотя бы одно из этих чисел является чётным.
Показать решение
a = int(input("введите первое целое число >>> "))
b = int(input("введите второе целое число >>> "))
result = (a % 2 == 0) or (b % 2 == 0)
print(f"Либо {a}, либо {b} — чётное число. Это : {result}")

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

введите первое целое число >>> 9
введите второе целое число >>> 2
Либо 9, либо 2 — чётное число. Это : True

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

  1. Считываем два целых числа.
  2. Проверяем чётность каждого через % 2 == 0.
  3. Объединяем проверки логическим оператором or.
  4. Выводим результат с использованием f-строки.

Лабораторная работа 3. Проверка пароля
Задача: написать программу, которая сравнивает пароль и его подтверждение. Если они совпадают, вывести «Пароль принят», иначе — «Пароль не принят».
Показать решение
password = input("Введите пароль: ")
confirm = input("Подтвердите пароль: ")
 
if password == confirm:
    print("Пароль принят")
else:
    print("Пароль не принят")

Пример работы (совпадение):

Введите пароль: qwerty
Подтвердите пароль: qwerty
Пароль принят

Пример работы (несовпадение):

Введите пароль: qwerty
Подтвердите пароль: Qwerty
Пароль не принят

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

  1. Считываем пароль и его подтверждение.
  2. Сравниваем строки через == (учитывается регистр).
  3. Выводим результат в зависимости от истинности условия.

Лабораторная работа 4. Чётное или нечётное
Задача: написать программу, которая определяет, является ли число чётным или нечётным.
Показать решение
n = int(input("Введите число: "))
 
if n % 2 == 0:
    print("Чётное")
else:
    print("Нечётное")

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

Введите число: 4
Чётное
Введите число: 7
Нечётное

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

  1. Считываем число.
  2. Проверяем остаток от деления на 2.
  3. Если остаток 0 — чётное, иначе — нечётное.

Лабораторная работа 5. Классификатор возрастных групп
Задача: написать программу, которая определяет возрастную группу человека:

  • 0–13: childhood (детство);
  • 14–24: youth (юность);
  • 25–59: maturity (зрелость);
  • 60+: old age (старость).
Показать решение
age = int(input("Введите возраст: "))
 
if 0 <= age <= 13:
    print("детство")
elif 14 <= age <= 24:
    print("юность")
elif 25 <= age <= 59:
    print("зрелость")
else:
    print("старость")

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

Введите возраст: 11
детство
Введите возраст: 27
зрелость

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

  1. Считываем возраст.
  2. Используем цепочки сравнения вида a <= x <= b — это уникальная особенность Python.
  3. Проверяем условия по порядку, пока не найдём подходящее.

Лабораторная работа 6. Проверка трёхзначности числа
Задача: написать программу, которая проверяет, является ли число трёхзначным.
Показать решение
n = int(input("Введите число: "))
 
if 100 <= abs(n) <= 999:
    print("Число трёхзначное")
else:
    print("Число не трёхзначное")

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

Введите число: 123
Число трёхзначное
Введите число: 45
Число не трёхзначное

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

  1. Считываем число.
  2. Используем abs(n), чтобы учесть отрицательные числа.
  3. Проверяем диапазон с помощью цепочки сравнения.

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

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

Введите число: 123
Все цифры различны
Введите число: 122
Не все цифры различны

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

  1. Извлекаем три цифры с помощью // и %.
  2. Проверяем, что каждая пара цифр отличается.
  3. Объединяем условия оператором and.

Лабораторная работа 8. Координатная четверть
Задача: написать программу, которая определяет номер координатной четверти точки (x, y), не лежащей на осях.
Показать решение
x = int(input("Введите x: "))
y = int(input("Введите y: "))
 
if x > 0 and y > 0:
    print("Четверть 1")
elif x < 0 and y > 0:
    print("Четверть 2")
elif x < 0 and y < 0:
    print("Четверть 3")
else:
    print("Четверть 4")

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

Введите x: 3
Введите y: 4
Четверть 1
Введите x: -2
Введите y: 5
Четверть 2

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

  1. Считываем координаты x и y.
  2. Определяем четверть по знакам координат.
  3. Используем цепочку if-elif-else для выбора одного из четырёх вариантов.

Лабораторная работа 9. Ход ладьи
Задача: даны две различные клетки шахматной доски. Определить, может ли ладья перейти из первой клетки во вторую за один ход. Ладья ходит на любое количество клеток по горизонтали или вертикали.
Показать решение
row1 = int(input("Введите строку1: "))
col1 = int(input("Введите столбец1: "))
row2 = int(input("Введите строку2: "))
col2 = int(input("Введите столбец2: "))
 
if row1 == row2 or col1 == col2:
    print("ДА")
else:
    print("НЕТ")

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

Введите строку1: 4
Введите столбец1: 4
Введите строку2: 4
Введите столбец2: 2
ДА

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

  1. Считываем координаты двух клеток.
  2. Ладья может ходить по одной строке (одинаковый номер строки) или по одному столбцу (одинаковый номер столбца).
  3. Объединяем два условия оператором or.

Лабораторная работа 10. Среднее по величине число
Задача: даны три целых числа. Написать программу, которая находит среднее по величине число.
Показать решение
a, b, c = int(input()), int(input()), int(input())
 
if (a <= b <= c) or (c <= b <= a):
    print("Ответ:", b)
elif (b <= a <= c) or (c <= a <= b):
    print("Ответ:", a)
else:
    print("Ответ:", c)

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

5
8
1
Ответ: 5

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

  1. Считываем три числа.
  2. Проверяем, является ли b средним (оно между a и c в любом порядке).
  3. Иначе проверяем a, затем — c.



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

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

Задание 1. Проверка на чётность одного числа
Условие: вводится целое число. Проверить истинность высказывания: число является чётным.

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

введите целое число >>> 9
Число чётное: False

Задание 2. Хотя бы одно из двух чисел чётное
Условие: вводятся два целых числа. Проверить истинность высказывания: хотя бы одно из этих чисел является чётным.

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

введите первое целое число >>> 9
введите второе целое число >>> 2
Либо 9, либо 2 — чётное число. Это : True

Задание 3. Пароль и подтверждение
Условие: напишите программу, которая сравнивает пароль и его подтверждение. Если они совпадают, вывести «Пароль принят», иначе — «Пароль не принят».

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

Введите пароль: qwerty
Подтвердите пароль: qwerty
Пароль принят

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

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

Введите число: 4
Чётное

Задание 5. Возрастная группа
Условие: напишите программу, которая определяет возрастную группу человека: 0–13 — childhood; 14–24 — youth; 25–59 — maturity; 60+ — old age.

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

Введите возраст: 11
детство

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

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

Введите число: 123
Число трёхзначное

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

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

Введите число: 123
Все цифры различны

Задание 8. Координатная четверть
Условие: напишите программу, которая определяет номер координатной четверти точки (x, y), не лежащей на осях.

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

Введите x: 3
Введите y: 4
Четверть 1

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

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

Введите строку1: 4
Введите столбец1: 4
Введите строку2: 4
Введите столбец2: 2
ДА

Задание 10. Среднее по величине число
Условие: даны три целых числа. Написать программу, которая находит среднее по величине число.

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

5
8
1
Ответ: 5

Задание 11. Сумма цифр трёхзначного числа
Условие: вводится трёхзначное целое число. Вывести сумму его цифр. Программа должна корректно работать с отрицательными числами.

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

Введите трёхзначное число
>>> -745
Вы ввели: 745. Сумма его трёх цифр равна 16

Подсказка: используйте abs() для получения модуля числа.

Задание 12. Обмен левой и средней цифр
Условие: вводится трёхзначное целое число. Обменять значения его левой и средней цифр.

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

Введите трёхзначное целое число
>>> 846
После обмена левой и средней цифр результат равен 486

Задание 13. Циклический сдвиг влево
Условие: вводится трёхзначное целое число. Выполнить циклический сдвиг разрядов влево (разряд единиц становится разрядом десятков, разряд десятков — разрядом сотен, а разряд сотен — разрядом единиц).

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

Введите трёхзначное целое число
>>> -734
После циклического сдвига цифр влево результат равен -347

Проверка:

123 => 231
-602 => -26

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

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

Введите двузначное число
>>> -57
Вы ввели -57. Результат равен -75

Проверка:

35 => 53
-10 => -1

Задание 15. Стандартная форма числа
Условие: вводятся две цифры (в диапазоне от 0 до 9). Используя стандартную форму числа, составить число, цифрами которого являются указанные цифры.

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

Введите две цифры
>>> 3
>>> 5
Новое число: 35

Проверка:

3, 5 => 35
7, 0 => 70
0, 4 => 4

Задание 16. Сантиметры в метры
Условие: вводится расстояние L в сантиметрах. Используя операцию целочисленного деления, перевести его в метры (1 метр = 100 сантиметров). Используйте комментарии, чтобы сделать программу понятной пользователю.

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

Введите расстояние в сантиметрах
>>> 245
Расстояние в метрах: 2

Задание 17. Килограммы в тонны
Условие: вводится масса в килограммах. Используя целочисленное деление, перевести её в тонны (1 тонна = 1000 килограммов). Используйте комментарии.

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

Введите массу в килограммах
>>> 4527
Масса в тоннах: 4

Задание 18. Возраст в годах
Условие: вводится возраст человека в месяцах. Перевести его в полное количество лет (например, 65 месяцев — это 5 полных лет, 24 месяца — 2 года). Проверьте корректность программы.

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

Введите возраст в месяцах
>>> 37
Возраст в годах: 3