Форум сайта python.su
0
Здравствуйте! Новичок в изучении Python. Требуется Ваша квалификационная помощь, консультация.
Содержание задачи.
Переменные A, B, C, D, E заданы черег границы от …до, шаг.
F - функция от A, B, C, D, E, которую необходимо определить через формулу. Значения F определены перебором (for).
После составления таблицы (столбцы A,B,C,D,E,F) сортировка по столбцу F не представляется возможным. Необходимо соединить полученные строки в одну таблицу / массив, который далее сортировать по любому столбцу или существуют другие способы.
Код:
print ('|{: ^7}|{: ^7}|{: ^7}|{: ^7}|{: ^7}|{: ^7}|'.format(“A”, “B”, “C”, “D”, “E”, “F”))
import numpy as np
for A in np.arange (0.3, 1.01, 0.5):
for B in np.arange (1, 8.01, 4):
for C in np.arange (1, 23.01, 14):
for D in np.arange (1, 8.01, 5):
for E in np.arange (1, 1.5, 1):
F
(A*B*C)/(D*E))
if F <= 10:
F=10
elif 10 < F:
F = ((A*B*C)/(D*E))
print (('|{: ^7.1f}|{: ^7.1f}|{: ^7.1f}|{: ^7.1f}|{: ^7.1f}|{: ^7.1f}|'.format(A, B, C, D, E, F)))
Печать в таком формате, но эти значения невозможно сортировать и невозможно строить единый график (строятся отдельные точки для каждого расчета).
| A | B | C | D | E | F |
| 0.3 | 1.0 | 1.0 | 1.0 | 1.0 | 10.0 |
| 0.3 | 1.0 | 1.0 | 6.0 | 1.0 | 10.0 |
| 0.3 | 1.0 | 15.0 | 1.0 | 1.0 | 10.0 |
| 0.3 | 1.0 | 15.0 | 6.0 | 1.0 | 10.0 |
| 0.3 | 5.0 | 1.0 | 1.0 | 1.0 | 10.0 |
| 0.3 | 5.0 | 1.0 | 6.0 | 1.0 | 10.0 |
| 0.3 | 5.0 | 15.0 | 1.0 | 1.0 | 22.5 |
| 0.3 | 5.0 | 15.0 | 6.0 | 1.0 | 10.0 |
| 0.8 | 1.0 | 1.0 | 1.0 | 1.0 | 10.0 |
| 0.8 | 1.0 | 1.0 | 6.0 | 1.0 | 10.0 |
| 0.8 | 1.0 | 15.0 | 1.0 | 1.0 | 12.0 |
| 0.8 | 1.0 | 15.0 | 6.0 | 1.0 | 10.0 |
| 0.8 | 5.0 | 1.0 | 1.0 | 1.0 | 10.0 |
| 0.8 | 5.0 | 1.0 | 6.0 | 1.0 | 10.0 |
| 0.8 | 5.0 | 15.0 | 1.0 | 1.0 | 60.0 |
| 0.8 | 5.0 | 15.0 | 6.0 | 1.0 | 10.0 |
Заранее спасибо за ответ и любую помощь (подсказку)!
Офлайн
Создать список, в цикле в него добавлять отдельными списками нужные значения (A, B, C, D, E, F), а уже дальше этот список сортировать по нужным критериям и выводить на экран?
Отредактировано Egorro13 (Май 31, 2019 10:06:29)
Офлайн
0
По условию изначально заданы A…E (каждый из которых свои границы имеет). Необходимо посчитать F. Результат представить в виде таблицы, которую можно сортировать по любому столбцу (A…F).
Офлайн
GEvgeniyБегло переделал код - показать, о чем речь: сортировка сделана по F по возрастанию, можно аналогично написать для любого другого столбца:
По условию изначально заданы A…E (каждый из которых свои границы имеет). Необходимо посчитать F. Результат представить в виде таблицы, которую можно сортировать по любому столбцу (A…F).
import numpy as np lst = list() for A in np.arange(0.3, 1.01, 0.5): for B in np.arange(1, 8.01, 4): for C in np.arange(1, 23.01, 14): for D in np.arange(1, 8.01, 5): for E in np.arange(1, 1.5, 1): F = ((A * B * C) / (D * E)) if F <= 10: F = 10 elif 10 < F: F = ((A * B * C) / (D * E)) lst.append([A, B, C, D, E, F]) for l in sorted(lst, key=lambda v: v[5]): A, B, C, D, E, F = l[0], l[1], l[2], l[3], l[4], l[5] print(( '|{: ^7.1f}|{: ^7.1f}|{: ^7.1f}|{: ^7.1f}|{: ^7.1f}|{: ^7.1f}|'.format( A, B, C, D, E, F)))
Отредактировано Egorro13 (Май 31, 2019 10:20:55)
Прикреплённый файлы:
firefox_2019-05-31_10-19-49.jpg (242,9 KБ)
Офлайн
0
Спасибо за помощь! Буду разбираться!
Офлайн