Управляющие структуры Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/ControlFlowGroup -.-> python/break_continue("Break and Continue") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_operations("File Operations") subgraph Lab Skills python/python_shell -.-> lab-393123{{"Управляющие структуры Python"}} python/conditional_statements -.-> lab-393123{{"Управляющие структуры Python"}} python/for_loops -.-> lab-393123{{"Управляющие структуры Python"}} python/while_loops -.-> lab-393123{{"Управляющие структуры Python"}} python/break_continue -.-> lab-393123{{"Управляющие структуры Python"}} python/function_definition -.-> lab-393123{{"Управляющие структуры Python"}} python/file_operations -.-> lab-393123{{"Управляющие структуры Python"}} end

Понимание условных операторов

На этом этапе вы узнаете о условных операторах в Python, в частности о структуре if-else.

  1. Откройте интерпретатор Python, введя следующую команду в терминале:

    python

    Вы должны увидеть приглашение Python (>>>), что означает, что вы теперь в интерактивной оболочке Python.

Интерпретатор Python
  1. Начнем с простого оператора if. В интерпретаторе Python введите следующее:

    >>> age = 20
    >>> if age >= 18:
    ...     print("You are an adult.")
    ...
    You are an adult.

    Совет 1: Будьте осторожны с отступами, они важны в Python. Рекомендуется использовать четыре пробела для отступов.

    Совет 2: Приглашение >>> указывает на начало новой строки, а приглашение ... - на продолжение предыдущей строки. Вы не должны вводить эти приглашения; они автоматически отображаются интерпретатором Python.

    Совет 3: Вы можете нажать клавишу Enter, чтобы перейти на следующую строку или продолжить вводить код на той же строке. Дважды нажмите Enter, чтобы выполнить код.

    Оператор if проверяет, является ли условие age >= 18 истинным. Если это так, то выполняется блок кода с отступом.

  2. Теперь добавим предложение else:

    >>> age = 15
    >>> if age >= 18:
    ...     print("You are an adult.")
    ... else:
    ...     print("You are a minor.")
    ...
    You are a minor.

    Предложение else предоставляет альтернативное действие, когда условие ложно.

  3. Для более сложных условий мы можем использовать предложения 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.

  1. Начнем с простого цикла for с использованием функции range. В интерпретаторе Python введите:

    >>> for i in range(5):
    ...     print(i)
    ...
    0
    1
    2
    3
    4

    Функция range(5) генерирует последовательность чисел от 0 до 4, и цикл проходит по каждому числу.

  2. Функция range() может принимать несколько аргументов, чтобы указать начальное, конечное значения и шаг. Попробуем другой диапазон:

    >>> for i in range(1, 10, 2):
    ...     print(i)
    ...
    1
    3
    5
    7
    9
    • Функция range(1, 10, 2) генерирует последовательность чисел, начиная с 1, до (но не включая) 10, с шагом 2.
  3. Теперь переберем элементы списка:

    >>> fruits = ["apple", "banana", "cherry"]
    >>> for fruit in fruits:
    ...     print(f"I like {fruit}")
    ...
    I like apple
    I like banana
    I like cherry

    Здесь цикл проходит по каждому элементу списка fruits.

  4. Вы также можете использовать циклы for с строками:

    >>> for char in "Python":
    ...     print(char.upper())
    ...
    P
    Y
    T
    H
    O
    N

    Этот цикл проходит по каждому символу в строке "Python".

  5. Теперь объединим цикл 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

    Этот цикл проверяет каждое число в списке и выводит, является ли оно четным или нечетным.

Понимание циклов while

На этом этапе вы узнаете о циклах while, которые используются для повторения блока кода, пока условие истинно.

  1. Начнем с простого цикла while. В интерпретаторе Python введите:

    >>> count = 0
    >>> while count < 5:
    ...     print(count)
    ...     count += 1
    ...
    0
    1
    2
    3
    4

    Этот цикл продолжает выполняться, пока count меньше 5.

  2. Циклы 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!")
    ... print(f"Congratulations! You guessed the number {number}!")

    Это создаёт простую игру-угадайку, в которой пользователь продолжает угадывать число до тех пор, пока не угадает правильное.

  3. Будьте осторожны с циклами while - если условие никогда не становится ложным, вы создадите бесконечный цикл. Посмотрим на пример (но не запускайте этот код на самом деле):

    >>> while True:
    ...     print("This will print forever!")

    Если вы случайно запустите бесконечный цикл, вы можете остановить его, нажав Ctrl+C.

  4. Вы можете использовать оператор break, чтобы прервать цикл досрочно:

    >>> count = 0
    >>> while True:
    ...     print(count)
    ...     count += 1
    ...     if count >= 5:
    ...         break
    ...
    0
    1
    2
    3
    4

    Этот цикл обычно бы работал бесконечно, но оператор break завершает его, когда count достигает 5.

Вложенные циклы и операторы управления циклами

На этом этапе вы узнаете о вложенных циклах и дополнительных операторах управления циклами.

  1. Вложенные циклы - это циклы, находящиеся внутри других циклов. Вот пример вложенных циклов 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

    Внутренний цикл выполняет все свои итерации для каждой итерации внешнего цикла.

  2. В дополнение к оператору break, Python предоставляет оператор continue, который пропускает оставшуюся часть текущей итерации и переходит к следующей:

    >>> for num in range(10):
    ...     if num % 2 == 0:
    ...         continue
    ...     print(num)
    ...
    1
    3
    5
    7
    9

    Этот цикл выводит только нечетные числа, пропуская четные.

  3. Вы можете использовать предложения else с циклами. Блок 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 выполняется, когда число является простым.

Сборка всего вместе

На этом последнем этапе вы создадите простую программу, которая использует управляющие структуры, изученные вами в этом практическом занятии.

  1. Выйдите из интерпретатора Python, введя exit() или нажав Ctrl+D.

  2. Откройте WebIDE в среде виртуальной машины LabEx.

Интерфейс WebIDE в виртуальной машине LabEx
  1. Создайте новый файл с именем number_analyzer.py в директории ~/project с помощью следующей команды:

    touch ~/project/number_analyzer.py
  2. Откройте только что созданный файл в редакторе WebIDE.

  3. Скопируйте и вставьте следующий код в файл:

    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, условных операторов и обработки исключений.

  4. Сохраните файл (автосохранение включено) и запустите его с помощью следующей команды в терминале:

    python ~/project/number_analyzer.py
  5. Введите несколько чисел по запросу, затем введите '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 вы обнаружите, что эти управляющие структуры являются неотъемлемой частью решения широкого спектра задач программирования. Не забывайте регулярно практиковать эти концепции, экспериментируя с разными комбинациями и сценариями использования, чтобы укрепить свое понимание.