Первая программа Python, не может понять ошибку »,« принимает 4 позиционных аргумента, но 5 были даны »Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Первая программа Python, не может понять ошибку »,« принимает 4 позиционных аргумента, но 5 были даны »

Сообщение Anonymous »

Ниже мой первый серьезный ход на классе Python 3.13. Я самоучка. < /P>
Пожалуйста, не откладывайте математику. Программа проста, и решение должно быть очевидным для кого -то с небольшим опытом кодирования. < /P>
a 1 кг частицы 'p' orbits Землю с достаточной высотой и скоростью, чтобы получить разумное круговое движение. < /P>
Я начал со всех переменных, которые были классовыми переменными и понижали эти вниз до 4 (g, me, t (time). переменные есть один экземпляр класса, который называется 'p'. < /p>
в 6 -й последней строке: P.Move (P.R, P.Rang, P.V, P.Vang), я получаю ошибку: < /p>


import math
class Particle:
# CLASS VARIABLES and constants
G = 6.674e-11 # gravity constant kilogram metre second
ME = 5.972e24 # mass earth kg
t = 0 # start time
dt = 1 # time increment seconds

def __init__(self, r, rAng, v, vAng, potE, kinE, totalE):
self.r = r
self.rAng = rAng
self.v = v
self.vAng = vAng
self.potE = potE
self.kinE = kinE
self.totalE = totalE

def move(r, rAng, v, vAng):
a = -Particle.G * Particle.ME / r**2
ax = a * math.cos(rAng)
ay = a * math.sin(rAng)

vx = v * math.cos(vAng) + ax * Particle.dt
vy = v * math.sin(vAng) + ay * Particle.dt
v = (vx**2 + vy**2) ** 0.5
vAng = math.atan2(vy, vx)

rx = r * math.cos(rAng) + vx * Particle.dt + 0.5 * ax * Particle.dt**2
ry = r * math.sin(rAng) + vy * Particle.dt + 0.5 * ay * Particle.dt**2
r = (rx**2 + ry**2) ** 0.5
rAng = math.atan2(ry, rx)
potE = -Particle.G * Particle.ME / r
kinE = 0.5 * 1 * v**2
totalE = potE + kinE
Particle.t += Particle.dt

def result(t, r, rAng, totalE, potE, kinE):
print(
f"t: {Particle.t: >7,d} s\
r: {r/1000:6.3f} km\
rAng: {(rAng*180/3.14159):6.1f}deg\
totalE: {int(totalE*1.0E-6)}MJ\
potE: {int(potE*1.0E-6)}MJ\
kinE: {int(kinE*1.0E-6)}MJ"
)

p = Particle(12748e03, 0, 5592, math.pi / 2, 0, 0, 0)

while Particle.t < 13000:
p.move(p.r, p.rAng, p.v, p.vAng)
if Particle.t % 100 == 0:
p.result(Particle.t, p.r, p.rAng, p.totalE, p.potE, p.kinE)
else:
continue
Particle.t += Particle.dt
< /code>
Есть только 4 аргумента. Python интерпретирует «P.Move» как 5 -й аргумент. Я попытался удалить ссылки на «P» в аргументах, но это приводит к большему количеству ошибок. Математика складывается ОК, так что это просто ошибка ссылки между «частицей» классом и «p» экземпляром. Я не смог найти ничего понятного в сети.
может кто -нибудь помочь? Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/794 ... uments-but
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»