Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/47: Рейтинг темы: голосов - 47, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 26.09.2021
Сообщений: 8

Равенство и порядок

26.09.2021, 19:53. Показов 11024. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На данный момент в нашем классе Point даже точки с полностью совпадающими именами и обеими координатами не считаются равными, а сравнивать их между собой мы вообще не можем (а значит не можем и сортировать без явного указания ключа):
Python
1
2
3
4
5
6
    points = [Point("A", 0, 3), Point("B", 4, 0)]  
    points.sort()  
 
    Traceback (most recent call last):  
      Python Shell, prompt 2, line 2  
    builtins.TypeError: unorderable types: Point() < Point()
Наведём порядок.
Пусть точки упорядочиваются лексикографически («как в словаре») по имени, при совпадении имён — по первой координате, при совпадении и имени, и первой координаты — по второй координате. Если же все три параметра у двух точек соответственно равны, точки считаются равными.
Добавьте в класс все необходимые для сравнения точек методы. Кроме того, не забудьте определить для Point магический метод repr.

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

Пример 1
Ввод
Python
1
2
3
4
5
6
7
8
9
10
11
12
from solution import Point
 
p_A1 = Point('A', 1, 2)
p_A2 = Point('A', 2, 1)
p_B1 = Point('B', 2, 3)
p_B2 = Point('B', 2, 3)
print(p_A1 == p_A2, p_B1 == p_B2)
print(p_A1 != p_A2, p_B1 != p_B2)
print(p_A1 < p_A2, p_B1 > p_B2)
print(p_A1 >= p_A2, p_B1 <= p_B2)
print(max(p_A1, p_B2, p_A2, p_B2))
print(min(p_A1, p_B2, p_A2, p_B2))
Вывод
Python
1
2
3
4
5
6
False True
True False
True False
False True
B(2, 3)
A(1, 2)
Пример 2
Ввод
Python
1
2
3
4
5
6
from solution import Point
 
points = [Point('A', 101, 1), Point('B', -1, 0),
          Point('A', 11, 0), Point('A', 111, -11)]
points.sort()
print(', '.join(map(str, points)))
Вывод
Python
1
A(11, 0), A(101, 1), A(111, -11), B(-1, 0)
Добавлено через 1 минуту
Мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Point:
    def __init__(self, st, x, y):
        self.st = st
        self.x = x
        self.y = y
        
    def __str__(self):
        return self.st + '(' + str(self.x) + ', ' + str(self.y) + ')'
 
    def __repr__(self):
        return 'Point(' + "'" + self.st + "'" + ', ' + str(self.x) + ', ' + str(self.y) + ')'
 
    def __eq__(self, other):
        if self.st == other.st and self.x == other.x and self.y == other.y:
            return True
        return False
 
    def __ne__(self, other):
        if self.st != other.st or self.x != other.x or self.y != other.y:
            return True
        return False
 
    def __lt__(self, other):
        if self.st < other.st or self.x < other.x or self.y < other.y:
            return True
        return False
 
    def __le__(self, other):
        if self.st <= other.st and self.x <= other.x and self.y <= other.y:
            return True
        return False
 
    def __gt__(self, other):
        if self.st > other.st or self.x > other.x or self.y > other.y:
            return True
        return False
 
    def __ge__(self, other):
        if self.st >= other.st and self.x >= other.x and self.y >= other.y:
            return True
        return False
 
    def get_x(self):
        return self.x
 
    def get_y(self):
        return self.y
Надо:
Python
1
2
3
4
5
6
False True
True False
True False
False True
B(2, 3)
A(1, 2)
Выводит:
Python
1
2
3
4
5
6
False True
True False
True False
False True
B(2, 3)
A(2, 1)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.09.2021, 19:53
Ответы с готовыми решениями:

Равенство и порядок
На данный момент в нашем классе Point даже точки с полностью совпадающими именами и обеими координатами не считаются равными, а сравнивать...

Равенство и порядок. Добавьте в класс все необходимые для сравнения точек методы
Пусть точки упорядочиваются лексикографически («как в словаре») по имени, при совпадении имён — по первой координате, при совпадении и...

Докажите равенство треугольников APD и AKB, и равенство углов BOP и BAD
BK и DP-высоты ромба ABCD, проведённые из вершин тупых углов соответственно на стороны AD и AB. Прямые BK и DP пересекаются в точке O....

2
2 / 2 / 0
Регистрация: 22.11.2020
Сообщений: 4
14.10.2021, 02:36
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class Point:
    def __init__(self, st, x, y):
        self.st = st
        self.x = x
        self.y = y
 
    def __repr__(self):
        return f"Point('{self.st}', {self.x}, {self.y})"
 
    def __str__(self):
        return '{}({}, {})'.format(self.st, self.x, self.y)
 
    def __eq__(self, other):
        if self.st == other.st and self.x == other.x and self.y == other.y:
            return True
        return False
 
    def __ne__(self, other):
        if self.st != other.st or self.x != other.x or self.y != other.y:
            return True
        return False
 
    def __lt__(self, other):
        if self.st < other.st or (self.st == other.st and self.x < other.x) or \
                (self.st == other.st and self.x == other.x and self.y < other.y):
            return True
        return False
 
    def __le__(self, other):
        if self.st <= other.st and self.x <= other.x and self.y <= other.y:
            return True
        return False
 
    def __gt__(self, other):
        if self.st > other.st or (self.st == other.st and self.x > other.x) or \
                (self.st == other.st and self.x == other.x and self.y > other.y):
            return True
        return False
 
    def __ge__(self, other):
        if self.st >= other.st and self.x >= other.x and self.y >= other.y:
            return True
        return False
0
0 / 0 / 0
Регистрация: 25.09.2025
Сообщений: 1
25.09.2025, 19:07
Вот верное решение, проходит все тесты

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class Point:
    def __init__(self, name, x, y):
        self._name = name
        self._x = x
        self._y = y
 
    def get_x(self):
        return self._x
 
    def get_y(self):
        return self._y
 
    def get_coords(self):
        return self._x, self._y
 
    def __str__(self):
        return f"{self._name}({self._x}, {self._y})"
 
    def __invert__(self):
        return Point(self._name, self._y, self._x)
 
    def __repr__(self):
        return f"Point('{self._name}', {self._x}, {self._y})"
 
    def __eq__(self, other: 'Point'):
        if self._name == other._name and self._x == other._x and self._y == other._y:
            return True
        return False
 
    def __ne__(self, other: 'Point'):
        if self._name != other._name or self._x != other._x or self._y != other._y:
            return True
        return False
 
    def __lt__(self, other: 'Point'):
        if self._name < other._name or (self._name == other._name and self._x < other._x) or \
                (self._name == other._name and self._x == other._x and self._y < other._y):
            return True
        return False
 
    def __le__(self, other: 'Point'):
        if self._name < other._name or (self._name == other._name and self._x < other._x) or \
                (self._name == other._name and self._x == other._x and self._y < other._y) or \
                (self._name == other._name and self._x == other._x and self._y == other._y):
            return True
        return False
 
    def __gt__(self, other: 'Point'):
        if self._name > other._name or (self._name == other._name and self._x > other._x) or \
                (self._name == other._name and self._x == other._x and self._y > other._y):
            return True
        return False
 
    def __ge__(self, other: 'Point'):
        if self._name > other._name or (self._name == other._name and self._x > other._x) or \
                (self._name == other._name and self._x == other._x and self._y > other._y) or \
                (self._name == other._name and self._x == other._x and self._y == other._y):
            return True
        return False
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2025, 19:07
Помогаю со студенческими работами здесь

Очень нужно подсчитать определитель на равенство/не равенство нулю
Здравствуйте. Мне очень нужно подсчитать данный определитель на равенство (или не равенство нулю), подскажите пожалуйста как мне его...

порядок группы равен 4 и в ней только 1 элемент имеет порядок 4. какой порядок имеют остальные элементы? сколько в ней подгрупп?
Совсем не чего не понятно

Доказать равенство множеств и равенство декартовых пр-ий
Здравсвуйте! Помогите пожалуйста доказать следующие равенства и декартовое произведение

Порядок отрицательных членов изменить на обратный, порядок неотрицательных сохранить
Задача по делфи(нужно все 3 пункта в 1 программе сделать) Прошу Помочь В условиях задания 3 а) порядок отрицательных членов...

Порядок отрицательных членов изменить на обратный, порядок неотрицательных сохранить
Задача (нужно все 3 пункта в 1 программе сделать) Прошу Помочь В условиях задания 3 а) порядок отрицательных членов изменить на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru