Как и во многих современных языках программирования, в Python есть механизмы обработки ошибок и управления потоками. Одним из таких механизмов является конструкция try-Exception, которая используется для перехвата и обработки исключений. В сочетании с циклом while эта конструкция может быть особенно полезна при работе с неопределенными входными данными или непредсказуемыми процессами.

Цикл while в Python неоднократно выполняет блок кода, пока условие истинно. Синтаксис:

while condition:
    # Code to be executed while the condition is true

Блок try позволяет нам проверять блок кода Python на наличие ошибок, а блок исключений позволяет нам обрабатывать эти ошибки в Python. Синтаксис:

try:
    # Code that might cause an error
except SomeSpecificError:
    # What to do in case of that specific error

Операторы потока в Python влияют на выполнение циклов (for и while):

  • Оператор Break: используется для преждевременного выхода из текущего цикла, останавливая все дальнейшие итерации.
  • Оператор continue: используется для пропуска оставшейся части текущей итерации и перехода к следующей итерации цикла.
Содержание

Цикл while в сочетании с try-Exception

Использование цикла while в сочетании с try-Exception — мощная комбинация, особенно при ожидании ввода пользователя или работе с непредсказуемыми процессами. Поскольку Python try while будет содержать блок кода, который может вызвать ошибку, а Python while, except, будет обрабатывать ошибку.

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

В Python может быть много разных способов использования блока try-except внутри цикла while.

Пример

Например, мы создали простую программу на Python, в которой пользователи вводят температуру в градусах Фаренгейта, а программа Python преобразует ее в градусы Цельсия. Если пользователи вводят что-то, что не является допустимым числом, программа Python должна сообщить им об этом и снова запросить допустимую температуру.

Здесь Python while True создает бесконечный цикл в Python, который будет неоднократно запрашивать у пользователя ввод данных, пока он не предоставит допустимое число(температура в градусах Фаренгейта). Как только они предоставят действительные входные данные и преобразование завершится успешно, мы сможем использовать оператор Python Break для выхода из цикла.

def fahrenheit_to_celsius(f):
    return(f - 32) * 5/9

while True:
    temp = input("Enter a temperature in Fahrenheit: ")

    try:
        fahrenheit_temp = float(temp)
        celsius_temp = fahrenheit_to_celsius(fahrenheit_temp)
        print(f"{fahrenheit_temp}°F is equal to {celsius_temp:.2f}°C.")
        break
    except ValueError:
        print("That's not a valid temperature. Please enter a number.")

Вывод: пользователю предлагается ввести Python температуру в градусах Фаренгейта. Программа пытается преобразовать входные данные в число с плавающей запятой. Если это не удается(например, пользователь вводит «горячий» вместо числа), возникает исключение Python ValueError. Блок try-Exception в Python улавливает ошибку и запрашивает у пользователя допустимый ввод.

Enter a temperature in Fahrenheit: hot
That's not a valid temperature. Please enter a number.

Enter a temperature in Fahrenheit: 80
80.0°F is equal to 26.67°C.

while try и while else обрабатывают ValueError

Мы взяли два разных входных данных, чтобы увидеть, как Python while try и while else обрабатывают ValueError.

Пример 2: расчет налога с продаж для разных штатов

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

Поскольку ставки налога с продаж варьируются от штата к штату, нам нужно попросить кассира ввести аббревиатуру штата для каждой транзакции. Если кассир вводит недопустимое сокращение или сумму, не являющуюся числом, программное обеспечение Python должно отобразить сообщение об ошибке и предложить ввести информацию еще раз.

sales_tax_rates = {'CA': 7.25, 'NY': 8.875, 'TX': 6.25}
while True:
    state_abbr = input("Please enter the state abbreviation:").upper()

    try:
        purchase_amount = float(input("Enter the purchase amount($): "))
        if state_abbr not in sales_tax_rates:
            raise KeyError

        tax = purchase_amount * sales_tax_rates[state_abbr] / 100
        print(f"The sales tax for a purchase of ${purchase_amount:} in {state_abbr} is ${tax:}")
        break

    except KeyError:
        print(f"We don't have tax data for {state_abbr}. Please enter a valid state abbreviation.")
        continue

Результат:

Please enter the state abbreviation:sa
Enter the purchase amount($): 1000
We don't have tax data for SA. Please enter a valid state abbreviation.

Please enter the state abbreviation:ca
Enter the purchase amount($): 1000
The sales tax for a purchase of $1000.0 in CA is $72.5

Пример 2: расчет налога с продаж для разных штатов 

Здесь мы взяли два разных входных данных, чтобы увидеть, как while try Кроме Python обрабатывает исключение, возникшее с помощью операторов while true continue и Break в Python.

Пример 3: сопоставление названий фруктов с их соответствующими цветами с помощью try

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

fruit_to_color = {'Apple': 'Red', 'Banana': 'Yellow', 'Blueberry': 'Blue', 'Grapes': 'Purple', 'Orange': 'Orange'}

while True:
    fruit_name = input("Enter the name of the fruit(or 'exit' to quit): ").title()
    if fruit_name == 'Exit':
        print('Thank You')
        break

    try:
        color = fruit_to_color[fruit_name]
        print(f"The color of {fruit_name} is {color}.")
    except KeyError:
        print(f"{fruit_name} not found in our database. Please try another fruit.")
        continue

Результат: Здесь мы пытаемся получить цвет фруктов непосредственно из словаря Python Fruit_to_color. Если фрукт не существует в словаре, он вызовет ошибку Python KeyError. Это исключение перехватывается в блоке исключений в Python, предоставляя пользователю обратную связь и предлагая ему повторить попытку. Цикл продолжается до тех пор, пока не будет введен действительный фрукт или пока пользователь не решит выйти.

Enter the name of the fruit(or 'exit' to quit): Pine apple
Pine Apple not found in our database. Please try another fruit.

Enter the name of the fruit(or 'exit' to quit): Exit
Thank You

Пример 3: сопоставление названий фруктов с их соответствующими цветами с помощью try

Таким образом, мы можем обработать ошибку с помощью Python try, за исключением цикла while.

Заключение

Сочетание цикла while с конструкциями try-Exception в Python позволяет создавать устойчивые сценарии, особенно в ситуациях, когда пользовательский ввод может быть непредсказуемым. С помощью соответствующих локализованных примеров, подобных приведенным выше, легче понять практическое применение этой мощной комбинации в Python.

Добавить комментарий