Статья Автор: Александр Ф. Алейников

13.4.2 Функции с возвратом значения. Часть 1

Решение задач

Задача 1. Напишите функцию, которая возвращает длину гипотенузы прямоугольного треугольника по известным значениям его катетов.

Решение. Для нахождения длины гипотенузы, нам нужно применить теорему Пифагора: квадрат гипотенузы прямоугольного треугольника, равен сумме квадратов его катетов. Другими словами, если a,b – длины катетов, а c – длина гипотенузы, то имеет место равенство: c2=a2+b2c=a2+b2

Функция, вычисляющая длину гипотенузы, может иметь вид:

def compute_hypotenuse(a, b):
    c = (a ** 2 + b ** 2) ** 0.5
    return c

 Для извлечения квадратного корня мы использовали оператор возведения в степень. Напомним, что результатом обоих выражений: math.sqrt(c) и c ** 0.5 является одно число c.

Следующий программный код:

print(compute_hypotenuse(3, 4))
print(compute_hypotenuse(5, 12))
print(compute_hypotenuse(1, 1))

выведет:

5.0                   # длина гипотенузы треугольника с катетами 3 и 4
13.0                  # длина гипотенузы треугольника с катетами 5 и 12
1.4142135623730951    # длина гипотенузы треугольника с катетами 1 и 1

Если нужно передать программе числа, считанные с клавиатуры, то мы пишем следующий код:

x = int(input())
y = int(input())

hypotenuse = compute_hypotenuse(x, y)

print(hypotenuse)

В модуле math имеется встроенная функция hypot(x, у) которая возвращает длину гипотенузы прямоугольного треугольника с катетами x и y.

Одним из основных преимуществ функций является возможность их повторного использования для решения похожих задач. Рассмотрим задачу нахождения расстояния между двумя точками.

Задача 2. Напишите функцию get_distance(x1, y1, x2, y2), вычисляющую расстояние между точками (x1;y1) и (x2;y2).

Решение. Расстояние между двумя точками (x1;y1) и (x2;y2) определяется по формуле ρ=(x1x2)2+(y1y2)2.

Несложно заметить, что искомое расстояние – это длина гипотенузы прямоугольного треугольника с катетами равными x1x2 и y1y2.

Функция, вычисляющая расстояние между точками, может иметь вид:

def get_distance(x1, y1, x2, y2):
    return compute_hypotenuse(x1 - x2, y1 - y2)

Для подсчета искомого расстояния мы используем уже созданную нами функцию compute_hypotenuse передавая ей в качестве аргументов числа x1 - x2 и y1 - y2.

Основная программа имеет вид:

x1, y1 = float(input()), float(input())  # считываем координаты первой точки
x2, y2 = float(input()), float(input())  # считываем координаты второй точки

print(get_distance(x1, y1, x2, y2))      # вычисляем и выводим расстояние между точками

Задача 3. Напишите функцию sum_digits(n), принимающую в качестве аргумента натуральное число и возвращающую сумму его цифр.

Решение. Функция sum_digits(n) может иметь вид:

def sum_digits(n):
    result = 0
    while n > 0:
        result += n % 10
        n //= 10
    return result

Основная программа имеет вид:

n = int(input())
print(sum_digits(n))      # вычисляем и выводим сумму цифр считанного числа

Задача 4. Напишите функцию compute_average(numbers), принимающую в качестве аргумента список чисел и возвращающую среднее значение элементов списка.

Решение. Для подсчета среднего значения элементов списка нужно вычислить сумму всех элементов и их количество, то есть использовать функции sum() и len(). Функция compute_average(numbers) может иметь вид:

def compute_average(numbers):
    return sum(numbers) / len(numbers)

Основная программа имеет вид:

numbers = [1, 3, 5, 1, 6, 8, 10, 2]
print(compute_average(numbers))      # вычисляем и выводим среднее значение элементов списка

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

Печать