Условный оператор и циклы в 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 | Качество кода □ Избегание глубокой вложенности □ Читаемость условий □ Оптимизация циклов |
□↩ |
Ссылки по теме
- Дополнительные операции с типами данных [1.4]
- Функции в Python: основные строительные блоки программ [1.5]
![Условный оператор и циклы в Python [1.7] Условный оператор и циклы в Python [1.7]](https://technobee.ru/media/zoo/images/line100_python_24f065d5f44b128d7987e916e0a668ad.png)