Введение
В этой лабораторной работе вы познакомитесь с фундаментальными управляющими конструкциями Python: условными операторами и циклами. Опираясь на знания, полученные в предыдущих работах, вы научитесь управлять логикой выполнения ваших программ с помощью операторов if-else, а также циклов for и while. Этот практический опыт углубит ваше понимание основных концепций Python и подготовит вас к написанию более сложных и динамичных программ.
Изучение условных операторов
На этом этапе вы познакомитесь с условными операторами в Python, в частности со структурой if-else.
Откройте интерпретатор Python, введя следующую команду в терминале:
python
Вы увидите приглашение Python (>>>), указывающее на то, что вы находитесь в интерактивной оболочке.

Начнем с простого оператора if. В интерпретаторе Python введите следующее:
age = 20
if age >= 18:
print("You are an adult.")
Результат:
You are an adult.
Совет: Будьте внимательны с отступами — в Python они имеют критическое значение. Для создания отступов рекомендуется использовать четыре пробела.
Оператор if проверяет, истинно ли условие age >= 18. Если это так, выполняется блок кода с отступом.
Теперь добавим блок else:
age = 15
if age >= 18:
print("You are an adult.")
else:
print("You are a minor.")
Результат:
You are a minor.
Блок else задает альтернативное действие, которое выполняется, если условие ложно.
Для обработки более сложных ситуаций можно использовать блоки elif (сокращение от else if):
age = 65
if age < 13:
print("You are a child.")
elif age < 20:
print("You are a teenager.")
elif age < 65:
print("You are an adult.")
else:
print("You are a senior citizen.")
Результат:
You are a senior citizen.
Блоки elif позволяют последовательно проверять несколько условий.
Помните, что отступы в Python обязательны. Именно они определяют, какие блоки кода относятся к конкретному условию.
Знакомство с циклами "For"
На этом этапе вы изучите циклы for, которые используются в Python для перебора элементов последовательностей (таких как списки, строки или диапазоны).
Начнем с простого цикла for, использующего диапазон. В интерпретаторе Python введите:
for i in range(5):
print(i)
Результат:
0
1
2
3
4
Функция range(5) генерирует последовательность чисел от 0 до 4, и цикл поочередно проходит по каждому числу.
Функция range() может принимать несколько аргументов для указания начала, конца и шага. Попробуем другой вариант:
for i in range(1, 10, 2):
print(i)
Результат:
1
3
5
7
9
- Функция
range(1, 10, 2)создает последовательность чисел, начиная с 1, до 10 (не включая само число 10), с шагом 2.
Теперь попробуем перебрать элементы списка:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(f"I like {fruit}")
Результат:
I like apple
I like banana
I like cherry
В данном случае цикл проходит по каждому элементу списка fruits.
Циклы for также отлично работают со строками:
for char in "Python":
print(char.upper())
Результат:
P
Y
T
H
O
N
Этот цикл перебирает каждый символ в строке "Python".
Давайте объединим цикл for с условными операторами:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
if num % 2 == 0:
print(f"{num} is even")
else:
print(f"{num} is odd")
Результат:
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
Этот цикл проверяет каждое число в списке и выводит сообщение о том, является ли оно четным или нечетным.
Как работает оператор остатка от деления (
%): Символ%называется оператором взятия остатка (модуля). Он возвращает остаток, полученный при делении одного числа на другое. Например:
5 % 2равно1(так как 5 делится на 2 дважды с остатком 1)4 % 2равно0(так как 4 делится на 2 нацело)10 % 3равно1(так как 10 делится на 3 трижды с остатком 1)Когда мы пишем
num % 2 == 0, мы фактически спрашиваем: "Остается ли 0 при делении этого числа на 2?". Если да, то число четное. Если остаток равен 1, то число нечетное. Оператор==используется для сравнения значений на равенство.
Изучение циклов "While"
На этом этапе вы познакомитесь с циклами while, которые повторяют блок кода до тех пор, пока заданное условие остается истинным.
Начнем с простого примера. В интерпретаторе Python введите:
count = 0
while count < 5:
print(count)
count += 1
Результат:
0
1
2
3
4
Этот цикл будет выполняться до тех пор, пока значение переменной count меньше 5.
Циклы while часто применяются в ситуациях, когда заранее неизвестно, сколько итераций потребуется. Вот пример:
import random
number = random.randint(1, 10)
guess = 0
while guess != number:
guess = int(input("Guess a number between 1 and 10: "))
if guess < number:
print("Too low!")
elif guess > number:
print("Too high!")
else:
print(f"Congratulations! You guessed the number {number}!")
Это простая игра "Угадай число", где пользователь вводит варианты до тех пор, пока не найдет правильный ответ. Когда введенное число совпадает с загаданным, срабатывает блок else с поздравлением.
Будьте осторожны с циклами while: если условие никогда не станет ложным, возникнет бесконечный цикл. Пример (не запускайте это):
while True:
print("This will print forever!")
Если вы случайно запустили бесконечный цикл, его можно прервать нажатием комбинации клавиш Ctrl+C.
Для досрочного выхода из цикла можно использовать оператор break:
count = 0
while True:
print(count)
count += 1
if count >= 5:
break
Результат:
0
1
2
3
4
Обычно такой цикл работал бы вечно из-за условия True, но оператор break принудительно завершает его, когда count достигает 5.
Вложенные циклы и управление циклом
На этом этапе вы изучите вложенные циклы и дополнительные операторы управления.
Вложенные циклы — это циклы, расположенные внутри других циклов. Вот пример вложенных циклов for:
for i in range(3):
for j in range(2):
print(f"i: {i}, j: {j}")
Результат:
i: 0, j: 0
i: 0, j: 1
i: 1, j: 0
i: 1, j: 1
i: 2, j: 0
i: 2, j: 1
Внутренний цикл полностью проходит все свои итерации для каждого шага внешнего цикла.
Помимо break, в Python есть оператор continue. Он пропускает оставшуюся часть текущей итерации и сразу переходит к следующей:
for num in range(10):
if num % 2 == 0:
continue
print(num)
Результат:
1
3
5
7
9
Этот цикл выводит только нечетные числа, пропуская четные.
Пояснение работы оператора остатка в данном контексте: Здесь условие
num % 2 == 0проверяет, является ли число четным. Если условие истинно, операторcontinueзаставляет программу проигнорировать строкуprint(num)и вернуться к началу цикла для следующего числа. Таким образом, до печати доходят только нечетные числа.
В Python циклы также могут иметь блок else. Он выполняется только в том случае, если цикл завершился естественным путем (без прерывания оператором break):
for num in range(2, 10):
for i in range(2, num):
if num % i == 0:
print(f"{num} is not prime")
break
else:
print(f"{num} is prime")
Результат:
2 is prime
3 is prime
4 is not prime
5 is prime
6 is not prime
7 is prime
8 is not prime
9 is not prime
Этот вложенный цикл ищет простые числа. Блок else выполняется, когда число оказывается простым (то есть внутренний цикл не нашел делителей и не был прерван через break).
Практическое применение
На заключительном этапе вы создадите небольшую программу, которая объединит все изученные управляющие конструкции.
Выйдите из интерпретатора Python, введя exit() или нажав Ctrl+D.
Откройте WebIDE в среде LabEx VM.

Создайте новый файл с именем number_analyzer.py в директории ~/project, используя следующую команду:
touch ~/project/number_analyzer.py
Откройте созданный файл в редакторе WebIDE.
Скопируйте и вставьте в файл следующий код:
def analyze_numbers():
numbers = []
while True:
user_input = input("Enter a number (or 'done' to finish): ")
if user_input.lower() == 'done':
break
try:
number = float(user_input)
numbers.append(number)
except ValueError:
print("Invalid input. Please enter a number or 'done'.")
if not numbers:
print("No numbers entered.")
return
total = sum(numbers)
average = total / len(numbers)
maximum = max(numbers)
minimum = min(numbers)
print(f"\nAnalysis of {len(numbers)} numbers:")
print(f"Total: {total}")
print(f"Average: {average:.2f}")
print(f"Maximum: {maximum}")
print(f"Minimum: {minimum}")
print("\nNumber distribution:")
for num in numbers:
if num < average:
print(f"{num} is below average")
elif num > average:
print(f"{num} is above average")
else:
print(f"{num} is equal to average")
if __name__ == "__main__":
analyze_numbers()
Эта программа демонстрирует использование циклов while и for, условных операторов и обработки исключений.
Сохраните файл (автосохранение обычно включено) и запустите его с помощью команды в терминале:
python ~/project/number_analyzer.py
Введите несколько чисел, а затем напишите done, чтобы увидеть результат анализа. Вывод должен выглядеть примерно так:
Enter a number (or 'done' to finish): 10
Enter a number (or 'done' to finish): 20
Enter a number (or 'done' to finish): 30
Enter a number (or 'done' to finish): 40
Enter a number (or 'done' to finish): done
Analysis of 4 numbers:
Total: 100.0
Average: 25.00
Maximum: 40.0
Minimum: 10.0
Number distribution:
10.0 is below average
20.0 is below average
30.0 is above average
40.0 is above average
Если вы ошиблись при вводе данных, просто запустите программу снова. Это отличная возможность попрактиковаться в запуске Python-скриптов с различными входными данными.
Резюме
В ходе этой лабораторной работы вы изучили основные управляющие конструкции Python: условные операторы (if-else), циклы for и while. Вы научились управлять логикой выполнения программ, принимать решения на основе условий и обрабатывать последовательности данных. Также вы закрепили навыки работы с вложенными циклами и операторами управления break и continue.
Эти конструкции составляют фундамент программирования на Python, позволяя создавать сложные и гибкие приложения. Вы увидели, как эти концепции объединяются в полезную программу для анализа пользовательских данных.
В вашем дальнейшем пути в Python эти инструменты станут незаменимыми для решения самых разных задач. Регулярно практикуйтесь, экспериментируйте с различными комбинациями и сценариями использования, чтобы довести понимание этих основ до автоматизма.



