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

Работа с методами

27.06.2020, 13:25. Показов 697. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите, пожалуйста, с небольшой частью задания:

Создать класс CelestialBody (небесное тело), включающий в себя следующие элементы:
- поле «вес» float Mass;
- поле «радиус» float Radius;
- метод расчета плотности вещества небесного тела float GetDensity();
- конструктор с параметрами CelestialBody(float Mass, float Radius).
Создать класс Planet (планета), содержащий в себе элементы:
- поле «период обращения вокруг оси» float RotatePeriod;
- поле «период обращения вокруг центра системы» float RotationPeriod;
- расстояние до центра системы float Distance;
- конструктор с параметрами Planet (float Mass, float Radius, float RotatePeriod, float RotationPeriod, float Distance).
- метод «слияние двух тел» (получение нового с суммарным весом и радиусом).
В каждом классе предусмотреть метод show(), который выводит на экран значения полей класса.

Я сделал всё, кроме двух выделенных выше методов.

В методе расчёта плотности нужно получить сумму значений полей класса CelestialBody по формуле: плотность = (значение поля "вес" + значение поля "радиус") / 3.

В методе "слияние двух тел" нужно получить новое небесное тело (простыми словами: взять поля одного класса и соединить их с полями другого класса, должно получиться так:

НовоеТело
Вес:
Радиус:
Период обращения вокруг оси:
Период обращения вокруг центра системы:
Расстояние: )

Работа сделана в двух файлах:
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
# Classes.py 
#создаем класс CelestialBody с полями 
class CelestialBody: 
    Mass = 0 
    Radius = 0
    CalcDensity = 0
 
    # конструктор с параметрами 
    def __init__(self,Mass,Radius): 
        self.Mass = float(Mass) 
        self.Radius = float(Radius)
 
    # метод который выводит на экран значения полей класса
    def show(self):
        print("\n Вес:",self.Mass)
        print(" Радиус:",self.Radius)
 
 
class Planet:
    RotatePeriod = 0
    RotationPeriod = 0
    Distance = 0
 
    # конструктор с параметрами 
    def __init__(self,RotatePeriod,RotationPeriod,Distance): 
        self.RotatePeriod = float(RotatePeriod)
        self.RotationPeriod = float(RotationPeriod)
        self.Distance = float(Distance)
 
    # метод который выводит на экран значения полей класса
    def show(self):
        print("Период обращения вокруг оси:",self.RotatePeriod)
        print("Период обращения вокруг центра системы:",self.RotationPeriod)
        print("Расстояние:",self.Distance)
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
60
61
62
63
64
from Classes import *
import os
key = 1
 
print("\n Введите параметры небесного тела")
running = True
while running:
    Mass = float(input("\n Вес :"))
    if Mass <=0:
        print("\n Ошибка: вес меньше или равен нулю!")
    else:
        running = False
 
 
running = True
while running:
    Radius = float(input("\n Радиус :"))
    if Radius <=0:
        print("\n Ошибка: радиус меньше или равен нулю!")
    else:
        running = False
 
print("\n Введите параметры планеты")
running = True
while running:
    RotatePeriod = float(input("\n Период обращения вокруг оси :"))
    if RotatePeriod <= 0:
        print("\n Ошибка: период обращения вокруг оси меньше или равен нулю!")
    else:
        running = False
 
running = True
while running:
    RotationPeriod = float(input("\n Период обращения вокруг центра системы:"))
    if RotationPeriod <=0:
        print("\n Ошибка: период обращения вокруг центра системы меньше или равен нулю!")
    else:
        running = False
 
running = True
while running:
    Distance = float(input("\n Расстояние :"))
    if Distance <=0:
        print("\n Ошибка: расстояние меньше или равно нулю!")
    else:
        running = False
 
cb = CelestialBody(Mass,Radius)
 
while key:
    print("\n 1 - Показать информацию о небесном теле\n 0 - Завершение")
    key = int(input())
    if key == 1:
        cb.show()
        break    
 
planeta = Planet(RotatePeriod,RotationPeriod,Distance)
 
while key:
    print("\n 1 - Показать информацию о планете\n 0 - Завершение")
    key = int(input())
    if key == 1:
        planeta.show()
        break
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.06.2020, 13:25
Ответы с готовыми решениями:

Работа с методами
Не получается разобраться с заданием, прошу помощи: -Написать static void power(double x, int n), который выпишет таблицу степеней х от...

Работа с методами
Суть в том, что вывод происходит внутри метода с рекурсией, но как сделать, так что-бы вывод происходил в основном методе, а все расчеты...

Работа с методами!
Доброго времени суток уважаемые эрудиты! Вопрос такой: -У меня есть метод который принимает данные из управляющего класса (например...

4
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489
27.06.2020, 13:42
Python
1
2
3
4
5
def GetDensity(self) -> float:
    return Mass / (4 / 3 * math.pi * Radius**3)
 
def Merge(self, body):
    return CelestialBody(self.Mass + body.Mass, self.Radius + body.Radius)
Добавлено через 3 минуты
Ещё замечание - в Python принятно названия методов и переменных писать со строчных букв
Я то придержался вашего стиля, но это так на будущее
2
0 / 0 / 0
Регистрация: 20.10.2019
Сообщений: 60
27.06.2020, 22:29  [ТС]
Я вставляю Ваши строки в файл Classes.py:
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
# Classes.py 
#создаем класс CelestialBody с полями 
class CelestialBody: 
    Mass = 0 
    Radius = 0
    Density = 0
 
    # метод расчёта плотности вещества небесного тела
    def GetDensity(self) -> float:
        return Mass / (4 / 3 * math.pi * Radius**3)
 
    # конструктор с параметрами 
    def __init__(self,Mass,Radius): 
        self.Mass = float(Mass) 
        self.Radius = float(Radius)
 
    # метод который выводит на экран значения полей класса
    def show(self):
        print("\n Вес:",self.Mass)
        print(" Радиус:",self.Radius)
 
 
class Planet:
    Mass = 0
    Radius = 0
    RotatePeriod = 0
    RotationPeriod = 0
    Distance = 0
 
    # конструктор с параметрами 
    def __init__(self,RotatePeriod,RotationPeriod,Distance): 
        self.RotatePeriod = float(RotatePeriod)
        self.RotationPeriod = float(RotationPeriod)
        self.Distance = float(Distance)
 
    # метод "слияния тел"
    def Merge(self, body):
        return CelestialBody(self.Mass + body.Mass, self.Radius + body.Radius)
 
 
    # метод который выводит на экран значения полей класса
    def show(self):
        print("Период обращения вокруг оси:",self.RotatePeriod)
        print("Период обращения вокруг центра системы:",self.RotationPeriod)
        print("Расстояние:",self.Distance)
но никак не получается вывести результаты работы этих функций. Если во втором файле написать:
Python
1
2
3
4
5
while key: # выбор элемента меню
    print("\n 1 - Показать результат работы первой функции\n 0 - Завершение")
    key = int(input())
    if key == 1:
        CelestialBody.show()
Python
1
2
3
4
5
while key: # выбор элемента меню
    print("\n 1 - Показать результат работы второй функции\n 0 - Завершение")
    key = int(input())
    if key == 1:
        Planet.show()
Выходит ошибка Traceback (most recent call last):
File "C:\Новая папка\пр4.py", line 61, in <module>
CelestialBody.show()
TypeError: show() missing 1 required positional argument: 'self'
Что-то я начал немного тупить на этом моменте.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
28.06.2020, 10:32
Цитата Сообщение от K1234567 Посмотреть сообщение
Выходит ошибка Traceback (most recent call last):
File "C:\Новая папка\пр4.py", line 61, in <module>
CelestialBody.show()
ты на русском назвал скрипт?

вот тут косяк
Цитата Сообщение от K1234567 Посмотреть сообщение
CelestialBody.show()
сначала объект создай, потом на нем вызывай шоу. а не на классе

И тебе верно написали -задача странная, в питоне так имена не дают для методов, спроси препода - что с ним? о джаве скучает?
0
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,294
28.06.2020, 18:52
K1234567, мне одному кажется что тут что то очень не так???
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class CelestialBody: 
    Mass = 0 
    Radius = 0
    Density = 0
    
     # конструктор с параметрами 
    def __init__(self,Mass,Radius): 
        self.Mass = float(Mass) 
        self.Radius = float(Radius)
        
    # метод расчёта плотности вещества небесного тела
    def GetDensity(self) -> float:
        return  Mass  #return Mass / (4 / 3 * math.pi * Radius**3) 
        
a = CelestialBody(210.52, 102.5)
print(a.GetDensity())
откуда взялась переменная Mass в 13 строке ??? проверяем и получаем

return Mass #return Mass / (4 / 3 * math.pi * Radius**3)
NameError: name 'Mass' is not defined
может еще раз внимательно вникнуть что такое атрибуты класса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2020, 18:52
Помогаю со студенческими работами здесь

Работа с методами
С# Написать метод, вычисляющий значение x в квадрате + у в квадрате. С его помощью определить, с какой парой чисел (а, b) или (c, d)...

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

Работа с методами
Метод InitArray инициализирует одинаковые значения для разных массивов при Запуске без отладки, если же поставить точку останова и пройтись...

Работа с классами и методами
Доброго времени суток. У меня вот в чем вопрос. Есть 2 класса, Program и MyArray Часть кода класса Programm class Program {...

Работа с методами (функции)
Привет всем Задача таткова Даны векторы A, B. У каждого вектора, компоненты которого не образуют неубывающей последовательности,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru