Форум сайта python.su
0
Подскажите как форматировано вывести элементы массивов в 6 столбиков, с точностью двух цифр после запятой, по аналогии как получается с командой
print '%.2f %.2f %2.f %.2f %.2f %2.f %2.f %2.f\n' % (x, fx, fd, cd, bd, fd2, cd2, bd2
from math import sin def f(x): return sin(3*x)+sin(2*x)+sin(x) h=0.01 x=3 k=3 fx=f(x) a = [] for i in range(100): x=x+h fx=f(x) fd=(f(x+h)-f(x))/h fd2=(f(x+2*h)-2*f(x+h)+f(x))/h**2 bd=(f(x)-f(x-h))/h bd2=(f(x)-2*f(x-h)+f(x-2*h))/h**2 cd=(f(x+h)-f(x-h))/(2*h) cd2=(f(x+h)-2*f(x)+f(x-h))/h**2 a.append(fd) print 'stolbik1' print '\n'.join([str(entry) for (n, entry) in zip(range(0,len(a)), a)]) # print '%.2f %.2f %2.f %.2f %.2f %2.f %2.f %2.f\n' % (x, fx, fd, cd, bd, fd2, cd2, bd2)
Отредактировано Logan (Дек. 25, 2012 00:06:02)
Офлайн
221
я в вашем коде вижу только массив a и строчку с принтом которая к этому a не относится. Следовательно, считаю задача сформулирована некорректно.
Офлайн
0
Строка с принтом выводит содержимое массива “а” в столбик, проверял и это работает… Вообщем суть в том чтобы записать значения “x, fx, fd, cd, bd, fd2, cd2, bd2” в массив, что в принципе понятно как, а вот отобразить все значения в 6 столбиков не знаю как с точностью 2.f.
Офлайн
221
Решений тут счаз не мало предложат. Например такое:
from math import sin def f(x): return sin(3*x)+sin(2*x)+sin(x) h=0.01 x=3 k=3 fx=f(x) a = [] for i in range(100): x=x+h fx=f(x) fd=(f(x+h)-f(x))/h fd2=(f(x+2*h)-2*f(x+h)+f(x))/h**2 bd=(f(x)-f(x-h))/h bd2=(f(x)-2*f(x-h)+f(x-2*h))/h**2 cd=(f(x+h)-f(x-h))/(2*h) cd2=(f(x+h)-2*f(x)+f(x-h))/h**2 a.append((x, fx, fd, cd, bd, fd2, cd2, bd2)) for i in a: print '\t'.join(['{:.2f}'.format(x) for x in i])
Офлайн
857
>>> lst = [[1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6]] >>> >>> fmt = '{:7.2f} ' * len(lst[0]) >>> >>> for i in lst: ... print fmt.format(*i) ... 1.00 2.00 3.00 1.00 2.00 3.00 4.00 5.00 6.00 4.00 5.00 6.00 >>>
Офлайн