вычисления в python prettytable
Вот, имеем,
H=10
q=0.8
d=0.1
P=d
r=P/q
over=q*r
S=0.9*r
Lbor=H+over
Lv=Lbor-S
Q=P*(Lbor-S)
a=Q/(q*r*H)
b=r
В первые 4 строки я могу вводить любые данные. И далее print все сама вызовет.
А нужно задать в 8-ю строку несколько Lbor подряд, cкажем Lbor = 15, Lbor = 12,Lbor = 18 и т.д. например до 10.
Т.е. чтобы print последовательно пробежал по всем заданным мною в произвольном порядке Llbor =х.
И далее, чтобы print все оформила в виде таблицы до 10 строк.
Вот такой:
from prettytable import PrettyTable
table = PrettyTable()
Вот с такими 7-ю columns (названиями) и 10-ю row (результатами)?? И здесь опять проблема?? Чем заполнить [ ]
N=list(range(1,11))
Lbor=H+over [ ]
S=0.9*r [ ]
Lv=Lbor-S [ ]
Q=P*(Lbor-S) [ ]
a=Q/(q*r*H) [ ]
b=r [ ]
columns = {
'N': ,
'Lbor': ,
'S': ,
'Lv': ,
'Q': ,
'a': ,
'b': ,
}
for key, item in columns.items():
table.add_column(key, item)
print(table)
Ответы (1 шт):
Я ничего не знаю про prettytable, иду в гугл, по одной из первых ссылок нахожу такой пример:
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.add_row(["Perth", 5386, 1554769, 869.4])
print(x)
Тут идет построчное добавление данных (add_row - добавить строку) вместо добавления колонок, как вам показали в ответе на один из ваших вопросов. По-моему так удобнее работать. В цикле просто вычисляете, все что нужно вывести в строку, потом добавляете строку с этими данными в таблицу. Пример:
from prettytable import PrettyTable
table = PrettyTable()
table.field_names = ['N', 'Lbor', 'S', 'Lv', 'Q', 'a', 'b']
H=10
q=0.8
d=0.1
table.float_format = '.2' # Ставим округление в таблице до 2 знаков после запятой
for N in range(1, 11):
# Все вычисляем
P=d
r=P/q
over=q*r
Lbor=N+over
S=0.9*r
Lv=Lbor-S
Q=P*(Lbor-S)
a=Q/(q*r*H)
b=r
# Добавляем новой строкой в таблицу
table.add_row([N, Lbor, S, Lv, Q, a, b])
print(table)
Вывод:
+----+-------+------+------+------+------+------+
| N | Lbor | S | Lv | Q | a | b |
+----+-------+------+------+------+------+------+
| 1 | 1.10 | 0.11 | 0.99 | 0.10 | 0.10 | 0.12 |
| 2 | 2.10 | 0.11 | 1.99 | 0.20 | 0.20 | 0.12 |
| 3 | 3.10 | 0.11 | 2.99 | 0.30 | 0.30 | 0.12 |
| 4 | 4.10 | 0.11 | 3.99 | 0.40 | 0.40 | 0.12 |
| 5 | 5.10 | 0.11 | 4.99 | 0.50 | 0.50 | 0.12 |
| 6 | 6.10 | 0.11 | 5.99 | 0.60 | 0.60 | 0.12 |
| 7 | 7.10 | 0.11 | 6.99 | 0.70 | 0.70 | 0.12 |
| 8 | 8.10 | 0.11 | 7.99 | 0.80 | 0.80 | 0.12 |
| 9 | 9.10 | 0.11 | 8.99 | 0.90 | 0.90 | 0.12 |
| 10 | 10.10 | 0.11 | 9.99 | 1.00 | 1.00 | 0.12 |
+----+-------+------+------+------+------+------+
В формулах поменял Lbor=H+over на Lbor=N+over, т.к. все строки были одинаковыми. За правильность исправления не отвечаю, это только для примера.