Как и во многих современных языках программирования, в 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
- Пример
- Пример 2: расчет налога с продаж для разных штатов
- Пример 3: сопоставление названий фруктов с их соответствующими цветами с помощью try
- Заключение
Цикл 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.
Мы взяли два разных входных данных, чтобы увидеть, как 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
Здесь мы взяли два разных входных данных, чтобы увидеть, как 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
Таким образом, мы можем обработать ошибку с помощью Python try, за исключением цикла while.
Заключение
Сочетание цикла while с конструкциями try-Exception в Python позволяет создавать устойчивые сценарии, особенно в ситуациях, когда пользовательский ввод может быть непредсказуемым. С помощью соответствующих локализованных примеров, подобных приведенным выше, легче понять практическое применение этой мощной комбинации в Python.