Слайды и текст этой онлайн презентации
Слайд 1
Обработка исключений
преподаватель Маркова АВ
Слайд 2
Почему возникают проблемы при исполнении данного кода?
value = int(input())
print(7/value)
ZeroDivisionError: division by zero
ValueError: invalid literal for int() with base 10: 't'
Слайд 3
Пути решения проблемы
1 вариант:
переписать код программы
2 вариант:
перехват ошибок
Слайд 4
Варианты решения
Если введен 0, то
value = int(input())
if value == 0:
print('Ошибка, введите число вновь')
else:
print(7/value)
Слайд 5
Варианты решения Решение проблемы 2
try:
value = int(input('Введите значение:'))
print(7/value)
except:
print('Ошибка')
В блок try помещается код, в которой может произойти ошибка.
В блок except помещается код, в которой передается в случае ошибки (перехватывает все ошибки без указания типа)
Слайд 6
Варианты ошибок. Соедините
Ошибка.Причина
ValueError: invalid literal for int() with base 10: 'y‘.Деление на 0
ZeroDivisionError: division by zero.Преобразование типов
Слайд 7
Задания: Перепишите код программы, пользуясь знаниями слайда 6
try:
value = int(input("Введите значение целочисленное значение: "))
print(7/value)
except ZeroDivisionError: #ошибка при делении на 0
print("Ошибка при делении на 0")
except ValueError:#ошибка преобразоания типа данных
print("Ошибка преобразования типа данных")
Слайд 8
AS помещение ошибки в переменную. Доступ к исключению как к объекту
try:
value = int(input("Введите значение целочисленное значение: "))
print(7/value)
except ZeroDivisionError as x:
print("Ошибка при делении на 0")
print(x)
except ValueError as y:
print("Ошибка преобразования типа данных")
print(y)
else:
print('Выполняется, если не произошло исключительных ситуаций!')
finally:
print('Выполняется всегда и в последнюю очередь')
Слайд 9
Повторение
Код.Ошибка
stroka ="2456"
print(stroka.index("0")).
.ValueError: substring not found
.
Слайд 10
Задачи для самостоятельного решения
Упражнение 13.1 Напишите программу, проверяющую четность числа, вводимого с клавиатуры. Выполните обработку возможных исключений.
Упражнение 13.2 Напишите программу, которая будет генерировать матрицу из случайных целых чисел. Пользователь может указать число строк и столбцов, а также диапазон целых чисел. Произведите обработку ошибок ввода пользователя
Слайд 11
Ситуацию усложняет то, что номера карт не просто случайный набор из 16 цифр.
Первая цифра обозначает тип карты. Например, номера карт Visa начинаются с 4, а MasterCard — c 5. Следующие пять обозначают банк, который выпустил карту. Другие девять цифр — уникальный номер конкретной карты. Последнюю, шестнадцатую цифру, называют контрольной.
Номер должен проходить проверку специальным алгоритмом Лу́на. Его придумал немецкий инженер Ганс Питер Лун.
Чтобы проверить, нужно взять номер карты и вычислить для него специальное число — контрольную сумму. Вот как это делают:
Каждую цифру в нечётной позиции, начиная с первого числа слева, умножаем на два. Если результат больше 9, складываем обе цифры этого двузначного числа. Или вычитаем из него 9 и получаем тот же результат. Например, если у нас 18, при сложении 1 + 8 получится 9, при вычитании 18 — 9 — тоже 9.
Затем мы складываем все результаты и цифры на чётных позициях — в том числе и последнюю контрольную цифру.
Если сумма кратна 10, то номер карты правильный. Именно последняя контрольная цифра делает общую сумму кратной 10.
Когда банки выпускают новыю карты и генерируют номера для них, контрольную шестнадцатую цифру они подбирают так, чтобы алгоритм Лу́на давал кратное десяти число. Поэтому у всех банковских карт в мире — номера с такой контрольной суммой.
Когда пользователь вводит номер своей карты, мы применяем алгоритм Луна. Если получится число, не кратное 10, — значит, пользователь ошибся.