обратные вычисления в python prettytable

вот такой код

H = 10
print(H)
q = 0.8
print(q)
r = 21/q
print(r)
Ovr = q*r
print(Ovr)
L = H+Ovr
print(L)
Lv = L*.2
print(Lv)
Q = L/6
print(Q)
a = Q/(q*r*H)
print(a)

Все расчеты делаются последовательно и завязаны на первую позицию H = 10, которую можно изменять. А как, допустим, все завязать на L и начать с нее.


Ответы (1 шт):

Автор решения: MaxU

Просто выразите все переменные используя переменные q, r и L:

from prettytable import PrettyTable

def calc(L, q, r):
    Ovr = q*r
    H = L - Ovr  # 21 - константа
    Lv = L*.2
    Q = L/6
    a = Q/(q*r*H)
    return [L, q, r, H, Lv, Q, a]

L = [12, 13, 24, 27, 31]
q = 0.8
r = 21/q

columns = ['L','q','r','H','Lv','Q','a']
tab = PrettyTable(field_names=columns, float_format=".2")
tab.add_rows([calc(l, q, r) for l in L])
print(tab)

результат:

+----+------+-------+-------+------+------+-------+
| L  |  q   |   r   |   H   |  Lv  |  Q   |   a   |
+----+------+-------+-------+------+------+-------+
| 12 | 0.80 | 26.25 | -9.00 | 2.40 | 2.00 | -0.01 |
| 13 | 0.80 | 26.25 | -8.00 | 2.60 | 2.17 | -0.01 |
| 24 | 0.80 | 26.25 |  3.00 | 4.80 | 4.00 |  0.06 |
| 27 | 0.80 | 26.25 |  6.00 | 5.40 | 4.50 |  0.04 |
| 31 | 0.80 | 26.25 | 10.00 | 6.20 | 5.17 |  0.02 |
+----+------+-------+-------+------+------+-------+
→ Ссылка