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

Создать класс Вектор

13.05.2021, 05:59. Показов 11505. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать класс Вектор, который на вход получает две координаты первого вектора и две
координаты второго вектора. В нём создать функции, используя специальные методы: вычитание векторов, сложение векторов, скалярное умножение векторов. Отдельно от класса функции длина вектора,
определения координаты вектора и умножение вектора на число. На вход приложение принимает координаты трех точек
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2021, 05:59
Ответы с готовыми решениями:

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
Привет! Задача следующая. Нужно реализовать класс "вектор" с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Создать класс «Вектор в трехмерном пространстве» позволяющий вычислять сумму векторов, их разность и произведение вектор
Доброго времени суток зашедшим помочь. Создать класс «Вектор в трехмерном пространстве» позволяющий вычислять сумму векторов, их разность...

Создать клас ВЕКТОР целых чисел. Разработать класс СТЕК, который вмещает объект класса ВЕКТОР
Создать клас ВЕКТОР целых чисел. Разработать класс СТЕК, который вмещает объект класса ВЕКТОР. Определить необходимые конструкторы, методы...

22
0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 15
13.05.2021, 06:01  [ТС]
Название: у21321.PNG
Просмотров: 244

Размер: 3.7 Кб
вот вектор
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
13.05.2021, 07:59
Python
1
print('длина результирующего вектора: ' + (lambda np:'{:.3f}'.format(np.linalg.norm((lambda a, b, c:((c - a) + 3 * (a - b)) * (c - a))(*[np.array([float(xy) for xy in input(f'введите координаты точки {chr(i)}: ').split()]) for i in range(65, 68)]))))(__import__('numpy')))
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
13.05.2021, 09:03
Цитата Сообщение от Ilya2321 Посмотреть сообщение
класс Вектор, который на вход получает две координаты первого вектора и две
координаты второго вектора.
- что за постановка? Класс ничего не получает "на вход"! Где ты это взял?

Добавлено через 44 секунды
КулХацкеръ, и где класс?
1
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
13.05.2021, 10:00
Цитата Сообщение от Catstail Посмотреть сообщение
КулХацкеръ, и где класс?
Ввод пользователя подаётся на вход функции numpy.array(), в итоге получаем объекты класса numpy.ndarray из библиотеки numpy.

Добавлено через 1 минуту
А создавать свои классы, когда есть готовые, я не буду. Не мое это, велосипеды изобретать.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
13.05.2021, 10:21
Цитата Сообщение от КулХацкеръ Посмотреть сообщение
__import__('numpy')
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
13.05.2021, 10:27
Цитата Сообщение от КулХацкеръ Посмотреть сообщение
А создавать свои классы, когда есть готовые, я не буду. Не мое это, велосипеды изобретать.
- тогда твой код в данной теме бесполезен...
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
13.05.2021, 10:35
Неа, не бесполезен... Топикстартеру остаётся только написать класс, а вычисление длины вектора он сможет взять из моего кода.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
13.05.2021, 10:37
Цитата Сообщение от КулХацкеръ Посмотреть сообщение
вычисление длины вектора он сможет взять из моего кода.
- о, да! Вычисление длины вектора - это серьезная вещь! Да и код прекрасен! Кстати, а разве в numpy нет вычисления длины вектора? Зачем же велосипеды изобретать?
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
13.05.2021, 10:52
Ирония не нравится. Получение результирующего вектора по формуле с картинки - непросто. А потом ещё применяется функция numpy.linalg.norm для определения его длины.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.05.2021, 11:55
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
class Vector:
    def __init__(self, x, y):
        self.__x = x
        self.__y = y
    
    @property
    def x(self):
        return self.__x
        
    @x.setter
    def _(self, x):
        self.__x = x
 
    @property
    def y(self):
        return self.__y
        
    @y.setter
    def _(self, y):
        self.__y = y
 
    @staticmethod
    def __operate(f, u, v):
        return Vector(*f(u, v))
 
    def __add__(self, other):
        return Vector.__operate(lambda u, v: (u.x + v.x, u.y + v.y), self, other)
        
    def __sub__(self, other):
        return Vector.__operate(lambda u, v: (u.x - v.x, u.y + v.y), self, other)
        
    def __mul__(self, other):
        return Vector.__operate(lambda u, v: (u.x * v.x, u.y + v.y), self, other)
Дальше сам!
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
13.05.2021, 12:37
КулХацкеръ, кстати, о "результирующем векторе". C ТС никакого спроса, это понятно. Но объясни свой код: какое произведение векторов у тебя реализовано (скалярное, векторное)?

Добавлено через 49 секунд
Arsegg, произведение векторов у Вас изящное...
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.05.2021, 13:57

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
произведение векторов у Вас изящное...
"Очепятался", бывает(( Да и не только произведение((
Кликните здесь для просмотра всего текста


0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
13.05.2021, 16:27
Цитата Сообщение от Catstail Посмотреть сообщение
какое произведение векторов у тебя реализовано (скалярное, векторное)?
Ну, скалярное произведение - это numpy.dot(), векторное - numpy.cross(). Пусть ТС выбирает то, которое ему подходит больше (я не знаю, какое именно у него).

Добавлено через 1 минуту
Да и у Arsegg, смотрю, тоже нет ни векторного, ни скалярного произведения.
0
13.05.2021, 16:57

Не по теме:

Цитата Сообщение от КулХацкеръ Посмотреть сообщение
Да и у Arsegg, смотрю, тоже нет ни векторного, ни скалярного произведения.
Некрасиво-то как!

0
13.05.2021, 17:01

Не по теме:

Сорри, если обидел. Мы с тобой оба хороши :).

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
13.05.2021, 19:59
Цитата Сообщение от КулХацкеръ Посмотреть сообщение
Ну, скалярное произведение - это numpy.dot(), векторное - numpy.cross().
- нет... Скалярное произведение - это вообще число:

https://www.cyberforum.ru/cgi-bin/latex.cgi?({x}_{1},{x}_{2})({y}_{1},{y}_{2})={x}_{1}*{y}_{1}+{x}_{2}*{y}_{2}

а векторное - это вектор, но направленный перпендикулярно плоскости, в которой лежат сомножители. Полагаю, векторное произведение к данной задаче не имеет отношения (поскольку векторы тут принадлежат плоскости). Если что, векторное произведение можно представить символически в виде определителя:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{vmatrix}i & j & k\\ {x}_{1} & {y}_{1} & {z}_{1}\\ {x}_{2} & {y}_{2} & {z}_{2} \end{vmatrix}

(i,j,k) - орты координатных осей.

Ну а решение задачи я бы выполнил, взяв за основу код уважаемого Arsegg, и слегка его (код) подправив:

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
class Vector:
    def __init__(self, x, y):
        self.__x = x
        self.__y = y
    
    @property
    def x(self):
        return self.__x
        
    @property
    def y(self):
        return self.__y
 
    @staticmethod
    def __operate(f, u, v):
        return Vector(*f(u, v))
 
    def __str__(self):
        return "("+str(self.x)+","+str(self.y)+")"
 
    def __add__(self, other):
        return Vector.__operate(lambda u, v: (u.x + v.x, u.y + v.y), self, other)
        
    def __sub__(self, other):
        return Vector.__operate(lambda u, v: (u.x - v.x, u.y + v.y), self, other)
        
    def __mul__(self, other):
        return self.x*other.x+self.y*other.y
        
    def __rmul__(self,k):
        return Vector(k*self.x,k*self.y)
        
def task():
    ax=float(input("Ax="))
    ay=float(input("Ay="))
    bx=float(input("Bx="))
    by=float(input("By="))
    cx=float(input("Cx="))
    cy=float(input("Cy="))
    vac=Vector(cx-ax,cy-ay)
    vba=Vector(ax-bx,ay-by)
    res=(vac-3*vba)*vac
    print(res)
    
task()
Сеттеры этому классу не нужны - нет смысла менять созданный вектор!
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
13.05.2021, 20:14
Непонятно, о чем спор. numpy.dot() и возвращает именно число. Не верите - проверьте.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
13.05.2021, 21:28
КулХацкеръ, спор о понимании сути (для тебя скалярное произведение, это numpy.dot, а для меня - математическая операция). И еще спор о сути задачи и форме написания кода. Твой код совершенно неприемлем. Почему? Потому, что для того, чтобы связать его с постановкой задачи, придется долго копаться. В промышленном программировании за такой код расстреливают увольняют или понижают в должности. Мой же код (основанный на коде Arsegg)вполне прозрачен и соответствует постановке задачи. Хочешь возразить?
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
13.05.2021, 21:39
КулХацкеръ, Catstail, давайте жить дружно!

Не по теме:

Но попкорн я уже достал

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2021, 21:39
Помогаю со студенческими работами здесь

Создать класс определяющий матрицу использующий класс вектор
Создайте класс, определяющий матрицу (двумерный массив), использующий класс "вектор", содержащий конструктор создания и...

Создать класс, полем которого является класс вектор
как это выглядит?

Создать класс, полями есть динамический вектор(то есть указатель на вектор) его размер и идентификатор
Задание нужно создать класс, полями есть динамический вектор(то есть указатель на вектор) его размер та идентификатор не получается в...

Создать класс Вектор
Здравствуйте, нужно создать класс Вектор и посчитать векторное и скалярное произведение двух векторов. Имею простой код, который считает,...

Создать класс Вектор
Создать класс Вектор, который на вход получает две координаты первого вектора и две координаты второго вектора. В нём создать функции,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru