7.2. Практикум¶
Примечание
При выполнении заданий используйте заготовки решений: ->
Репозиторий.
Подробнее: см. Цикл выполнения и защиты заданий.
7.2.1. Простая отладка программ¶
Для задач 7.2.1-7.2.5 приведено условие задачи и ее решение (ошибочное).
Для каждой задачи:
используя визуальный просмотр кода, простое журналирование, проверку PEP8 или отладчик в IDE:
разберитесь в алгоритме решения;
найдите номера строк, в которых есть ошибки, и укажите их в строке документации;
исправьте ошибки, минимально изменив код (как правило, заменив строчку на строчку); ошибки исправляются по ходу программы, сверху вниз.
Пример.
Исходная программа:
"""
Ошибки (номера строк через пробел): !!!
"""
def even_mult(nums):
"""Вернуть произведение четных чисел в списке 'nums'."""
p = 0
for item in nums:
if item % 2 != 0:
p *= item
return p
Исправленная программа:
"""
Ошибки (номера строк через пробел): 8 10
"""
def even_mult(nums):
"""Вернуть произведение четных чисел в списке 'nums'."""
p = 1
for item in nums:
if item % 2 == 0:
p *= item
return p
№ 7.2.1 - № 7.2.5
7.2.2. Обработка исключений и утверждения¶
Программы 7.2.6-7.2.11 написаны верно, однако содержат места потенциальных ошибок.
Для каждой задачи:
найдите потенциальные источники ошибок (укажите номера строк в строке документации);
используя конструкцию
try
добавьте в код обработку соответствующих исключений.
Пример.
Исходная программа:
"""
Ошибки (номера строк через пробел): !!!
"""
def avg(a, b):
"""Вернуть среднее геометрическое чисел 'a' и 'b'.
Параметры:
- a, b (int или float).
Результат:
- float.
"""
return (a * b) ** 0.5
a = float(input("a = "))
b = float(input("b = "))
c = avg(a, b)
print("Среднее геометрическое = {:.2f}".format(c))
Исправленная программа:
"""
Ошибки (номера строк через пробел): 15 18 19
"""
def avg(a, b):
"""Вернуть среднее геометрическое чисел 'a' и 'b'.
Параметры:
- a, b (int или float).
Результат:
- float.
Исключения:
- ValueError: вычисление не возможно.
"""
if a * b >= 0:
return (a * b) ** 0.5
else:
raise ValueError("Невозможно определить среднее геометрическое "
"введенных чисел.")
try:
a = float(input("a = "))
b = float(input("b = "))
c = avg(a, b)
print("Среднее геометрическое = {:.2f}".format(c))
except ValueError as err:
print("Ошибка:", err, ". Проверьте введенные числа.")
except Exception as err:
print("Ошибка:", err)
№ 7.2.6 - № 7.2.11