Module (57%)
Section (93%)
Лабораторная работа

Время выполнения

30-60 минут

Уровень сложности

Низкий/Средний

Цели

  • улучшение навыков учащегося в создании классов с нуля;
  • определение и использование переменных экземпляра;
  • определение и использование методов.

Сценарий

Давайте посетим совершенно особенное место - плоскость с декартовой системой координат (Вы можете узнать больше об этой концепции здесь: Прямоугольная система координат).

Каждую точку, расположенную на плоскости, можно описать как пару координат, обычно называемую x и y. Мы хотим, чтобы Вы написали класс Python, который хранит обе координаты как числа с плавающей запятой. Более того, мы хотим, чтобы объекты этого класса считали расстояния между любой из двух точек, расположенных на плоскости.

Задача довольно проста, если Вы воспользуетесь функцией с именем hypot() (доступна в модуле math), которая считает длину гипотенузы прямоугольного треугольника (подробнее здесь: Гипотенуза) и здесь: Trigonometric functions.

Вот как мы представляем себе класс:

  • он называется Point;
  • его конструктор принимает два аргумента (x и y соответственно), оба из которых по умолчанию равны нулю;
  • все свойства должны быть скрытыми;
  • класс содержит два метода без параметров, названные getx() и gety(), которые возвращают каждую из двух координат (координаты хранятся скрыто, поэтому они не могут быть доступны непосредственно из объекта);
  • класс предоставляет метод под названием distance_from_xy(x, y), который вычисляет и возвращает расстояние между точкой, хранящейся внутри объекта, и другой точкой, заданной как пара пунктов;
  • класс предоставляет метод под названием distance_from_point(point), который вычисляет расстояние (как в предыдущем методе), но местоположение другой точки задается как другой объект класса Point;

Дополните шаблон, который мы предоставили в редакторе, запустите свой код и проверьте, выглядит ли Ваш результат так же, как наш.

Ожидаемый вывод

1.4142135623730951 1.4142135623730951



Code

import math


class Point:
def __init__(self, x=0.0, y=0.0):
#
# Напишите здесь код.
#

def getx(self):
#
# Напишите здесь код.
#

def gety(self):
#
# Напишите здесь код.
#

def distance_from_xy(self, x, y):
#
# Напишите здесь код.
#

def distance_from_point(self, point):
#
# Напишите здесь код.
#


point1 = Point(0, 0)
point2 = Point(1, 1)
print(point1.distance_from_point(point2))
print(point2.distance_from_xy(2, 0))
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×