def personal_sum(*numbers):
result = 0
incorrect_data = 0
for i in numbers:
try:
result += i
except TypeError:
print(f'Некорректный тип данных для подсчета суммы – {i}')
incorrect_data += 1
return f'Сумма чисел: {result}, количество некорректных данных: {incorrect_data}'
def calculate_average(*numbers):
try:
if not isinstance(numbers, (list, tuple)):
print('В numbers записан некорректный тип данных')
return None
total_sum, incorrect_data = personal_sum(numbers)
count = len(numbers) - incorrect_data
average = total_sum / count
return average
except ZeroDivisionError:
return 0
except TypeError:
print('В numbers записан некорректный тип данных')
return None
# Примеры использования этих функций
print(f'Результат 1: {calculate_average("1, 2, 3")}')
print(f'Результат 2: {calculate_average([1, "Строка", 3, "Ещё Строка"])}')
print(f'Результат 3: {calculate_average(567)}')
print(f'Результат 4: {calculate_average([42, 15, 36, 13])}')
写2个函数:
函数personal_sum(numbers):应该接受数字的集合。通过暴力计算数字中的数字之和,并增加结果变量。
如果在搜索过程中遇到数字以外的数据类型,则通过将不正确的数据计数器增加 1 来处理 TypeError 异常。
最终,该函数返回一个由两个值组成的元组:result - 数字之和,unknown_data - 错误数据的数量。函数calculate_average(numbers) 算术平均值是所有数据的总和除以它们的数量。
应该获取数字集合并返回:所有数字的算术平均值。在内部,要计算金额,请使用之前编写的 individual_sum 函数。
因为数字集合可能为空,则处理除以 0 时的 ZeroDivisionError 异常并返回 0。此外,数字可能包含其他数据类型,例如数字,而不是集合。通过打印“无效的数据类型写入数字”行来处理 TypeError 异常。在这种情况下,该函数将简单地返回 None。