Перейти к содержимому

Условный оператор и циклы в Python [1.7]

Условный оператор и циклы в Python [1.7]

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

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

Базовая структура условного оператора

Условный оператор имеет следующую структуру:

if условие_1:
    # Код, выполняемый если условие_1 истинно
elif условие_2:
    # Код, выполняемый если условие_1 ложно, а условие_2 истинно
else:
    # Код, выполняемый если все условия ложны

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

age = 25

if age ‹ 18:
    print("Пользователь несовершеннолетний")
elif age ‹ 65:
    print("Пользователь взрослый")
else:
    print("Пользователь пожилой")
# Вывод: Пользователь взрослый

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

Для создания условий используются операторы сравнения:

ОператорОписаниеПримерРезультат
== Равно 5 == 5 True
!= Не равно 5 != 3 True
> Больше 5 > 3 True
>= Больше или равно 5 >= 5 True
< Меньше 3 < 5 True
<= Меньше или равно 3 <= 5 True
in Содержится в 'a' in 'apple' True
not in Не содержится в 'b' not in 'apple' True
is Сравнение по ссылке None is None True

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

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

x = 10
y = 5

# Логическое И (and) - истинно, если оба условия истинны
print(x > 5 and y < 10)  # True

# Логическое ИЛИ (or) - истинно, если хотя бы одно условие истинно
print(x < 5 or y < 10)   # True

# Логическое НЕ (not) - инвертирует значение
print(not (x > 5))        # False

Вложенные условные операторы

Условные операторы можно вкладывать друг в друга для создания более сложной логики:

score = 85

if score >= 90:
    grade = 'A'
else:
    if score >= 80:
        grade = 'B'
    else:
        if score >= 70:
            grade = 'C'
        else:
            grade = 'F'

print(f"Оценка: {grade}")  # Оценка: B

Тернарный оператор

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

# Обычный условный оператор
x = 10
if x > 0:
    result = x
else:
    result = 0

# Тернарный оператор
result = x if x > 0 else 0
print(result)  # 10

# Еще пример
age = 20
status = "совершеннолетний" if age >= 18 else "несовершеннолетний"
print(status)  # совершеннолетний

Циклы

Циклы позволяют выполнять повторяющиеся действия. В Python есть два основных типа циклов: for и while.

Цикл for

Цикл for используется для итерации по последовательностям (списки, строки, кортежи и т.д.):

# Итерация по списку
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    print(num)
# 1
# 2
# 3
# 4
# 5

# Итерация по строке
text = "Python"
for char in text:
    print(char)
# P
# y
# t
# h
# o
# n

Функция range()

Для создания последовательности чисел используется функция range():

# range(stop) - от 0 до stop-1
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

# range(start, stop) - от start до stop-1
for i in range(2, 7):
    print(i)  # 2, 3, 4, 5, 6

# range(start, stop, step) - с шагом
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8

# Обратный отсчет
for i in range(5, 0, -1):
    print(i)  # 5, 4, 3, 2, 1

Цикл while

Цикл while выполняется, пока условие остается истинным:

# Простой пример
count = 0
while count < 5:
    print(count)
    count += 1
# 0
# 1
# 2
# 3
# 4

# Пример с пользовательским вводом
user_input = ""
while user_input.lower() != "выход":
    user_input = input("Введите команду (или 'выход' для завершения): ")
    print(f"Вы ввели: {user_input}")

Операторы break и continue

Для управления выполнением циклов используются специальные операторы:

# Оператор break - немедленно завершает цикл
print("Пример break:")
for i in range(10):
    if i == 5:
        break
    print(i)
# 0
# 1
# 2
# 3
# 4

# Оператор continue - пропускает текущую итерацию и переходит к следующей
print("\nПример continue:")
for i in range(10):
    if i % 2 == 0:
        continue
    print(i)
# 1
# 3
# 5
# 7
# 9

Вложенные циклы

Циклы можно вкладывать друг в друга для создания более сложной логики:

# Таблица умножения
for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i} x {j} = {i * j}")
    print("---")
# 1 x 1 = 1
# 1 x 2 = 2
# 1 x 3 = 3
# ---
# 2 x 1 = 2
# 2 x 2 = 4
# 2 x 3 = 6
# ---
# 3 x 1 = 3
# 3 x 2 = 6
# 3 x 3 = 9
# ---

Бесконечные циклы

Иногда требуется создать цикл, который выполняется бесконечно, пока не будет прерван вручную:

# Бесконечный цикл с условием выхода
count = 0
while True:
    print(f"Итерация {count}")
    count += 1
    if count >= 5:
        print("Завершение цикла")
        break
# Итерация 0
# Итерация 1
# Итерация 2
# Итерация 3
# Итерация 4
# Завершение цикла

Практические примеры

Пример 1: Проверка числа на простоту

def is_prime(number):
    """Проверяет, является ли число простым"""
    if number <= 1:
        return False
    if number <= 3:
        return True
    if number % 2 == 0 or number % 3 == 0:
        return False
    
    i = 5
    while i * i <= number:
        if number % i == 0 or number % (i + 2) == 0:
            return False
        i += 6
    return True

# Проверка нескольких чисел
test_numbers = [2, 3, 4, 17, 20, 23, 29, 30]
for num in test_numbers:
    print(f"{num} - {'простое' if is_prime(num) else 'составное'} число")

Пример 2: Обработка списка студентов

students = [
    {"name": "Иван", "grade": 4.5},
    {"name": "Мария", "grade": 3.8},
    {"name": "Петр", "grade": 4.9},
    {"name": "Анна", "grade": 3.2},
    {"name": "Сергей", "grade": 4.2}
]

print("Список студентов:")
for student in students:
    status = "отличник" if student["grade"] >= 4.5 else "хорошист" if student["grade"] >= 4.0 else "троечник"
    print(f"{student['name']}: {student['grade']} - {status}")

# Подсчет статистики
excellent_students = 0
total_grade = 0

for student in students:
    total_grade += student["grade"]
    if student["grade"] >= 4.5:
        excellent_students += 1

average_grade = total_grade / len(students)
print(f"\nСредний балл: {average_grade:.2f}")
print(f"Количество отличников: {excellent_students}")

Пример 3: Игра "Угадай число"

import random

print("Добро пожаловать в игру 'Угадай число'!")
print("Я загадал число от 1 до 100. Попробуйте угадать!")

secret_number = random.randint(1, 100)
attempts = 0

while True:
    try:
        guess = int(input("Ваш вариант: "))
        attempts += 1
        
        if guess < secret_number:
            print("Загаданное число больше!")
        elif guess > secret_number:
            print("Загаданное число меньше!")
        else:
            print(f"Поздравляю! Вы угадали число {secret_number} за {attempts} попыток!")
            break
            
    except ValueError:
        print("Пожалуйста, введите корректное число!")

Рекомендации по использованию

Для условных операторов:

  • Используйте четкие и понятные условия
  • Избегайте слишком глубокой вложенности (более 3 уровней)
  • Предпочитайте тернарные операторы для простых условий
  • Всегда проверяйте граничные значения в условиях

Для циклов:

  • Предпочитайте цикл for для итерации по известным последовательностям
  • Используйте цикл while для условий, которые могут изменяться динамически
  • Всегда предусматривайте условие выхода из цикла
  • Используйте операторы break и continue для управления логикой цикла
  • Избегайте бесконечных циклов без условия выхода

Заключение

В этом разделе мы изучили два фундаментальных концепта программирования: условные операторы и циклы. Эти инструменты позволяют создавать программы с разветвленной логикой и повторяющимися действиями. Понимание того, как работают if, for и while, а также как управлять их выполнением с помощью break и continue, является ключевым для написания эффективного кода на Python.

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

ЧЕК-ЛИСТ ПО СТАТЬЕ 1.7: УСЛОВНЫЙ ОПЕРАТОР И ЦИКЛЫ

Навык / ЗнаниеСтатус
1 Операторы сравнения
□ Равенство и неравенство ==, !=
□ Больше/меньше >, <, >=, <=
□ Принадлежность in, not in
□ Идентичность объектов is, is not
□↩
2 Логические операции
□ Логическое И and
□ Логическое ИЛИ or
□ Логическое НЕ not
□ Приоритет логических операций
□↩
3 Условный оператор
□ Базовая структура if-elif-else
□ Вложенные условные операторы
□ Тернарный оператор x if condition else y
□↩
4 Цикл for
□ Итерация по последовательностям
□ Функция range()
□ Вложенные циклы for
□↩
5 Цикл while
□ Выполнение пока условие истинно
□ Предотвращение бесконечных циклов
□ Использование while True с break
□↩
6 Управление циклами
□ Оператор break
□ Оператор continue
□ Правильное использование
□↩
7 Комбинация условий и циклов
□ Условия внутри циклов
□ Циклы внутри условий
□ Сложная вложенная логика
□↩
8 Цепочки сравнений
□ Синтаксис a < b < c
□ Читаемость и приоритеты
□↩
9 Выбор цикла
□ Когда использовать for
□ Когда использовать while
□ Критерии выбора
□↩
10 Отладка
□ Поиск логических ошибок
□ Тестирование условий
□ Проверка циклов
□↩
11 Качество кода
□ Избегание глубокой вложенности
□ Читаемость условий
□ Оптимизация циклов
□↩

Ссылки по теме

Конспект:
Пятница, 05 декабря 2025
Условный оператор и циклы в Python [1.7]