Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 24, 2012 23:58:45

Logan
Зарегистрирован: 2012-12-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Форматированый вывод массивов

Подскажите как форматировано вывести элементы массивов в 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)

Офлайн

#2 Дек. 25, 2012 01:00:31

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Форматированый вывод массивов

я в вашем коде вижу только массив a и строчку с принтом которая к этому a не относится. Следовательно, считаю задача сформулирована некорректно.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Дек. 25, 2012 02:16:18

Logan
Зарегистрирован: 2012-12-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Форматированый вывод массивов

Строка с принтом выводит содержимое массива “а” в столбик, проверял и это работает… Вообщем суть в том чтобы записать значения “x, fx, fd, cd, bd, fd2, cd2, bd2” в массив, что в принципе понятно как, а вот отобразить все значения в 6 столбиков не знаю как с точностью 2.f.

Офлайн

#4 Дек. 25, 2012 02:42:28

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Форматированый вывод массивов

Решений тут счаз не мало предложат. Например такое:

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])



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Дек. 25, 2012 03:32:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Форматированый вывод массивов

>>> 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 
>>>
ещё



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version