ValueError: имя поля нулевой длины в формате python [дубликат]


Возможные Дубликаты:
" ValueError: имя поля нулевой длины в формате " ошибка в Python 3.0, 3.1, 3.2

Я потратил часы, пытаясь решить эту проблему, но безрезультатно. Я читаю данное руководство. Я не нашел никаких примеров, как делать то, что мне нужно.

при запуске скрипта я получаю эту ошибку (частично опущена):

Traceback (...):
   [...]
   output.write("{: > 026,.18e} {: > 026,.18e}n".format(x,y))
ValueError: zero length field name in format.

код написан на Python 2.6 или 2.7, но я запустите python 3.1. Как мне нужно изменить формат вывода, чтобы он работал?

def f(x,y,a = 0.01):
    return y/(a+x)-y**3

def ekspEuler(N,dat):
    output = open(dat,"w")
    h = 3.0/N
    x,y = 0,1 #zac.pogoj

    for i in range(1,N+2):
        output.write("{: > 026,.18e} {: > 026,.18e}n".format(x,y))
        y += h*f(x,y)
        x = i*h
    output.close()

Спасибо за вашу помощь.

1 57

1 ответ:

скорее всего, вы используете старую версию Python, а не 3.1. В Python 2.6 вам нужны индексы в формате specs, например:

"{0} {1}\n".format(x,y)

обновите версию Python до последней, предпочтительно 2.7 или 3.2, чтобы устранить проблему. Согласно документации, опуская числовые индексы должно работать в Python 3.1:

изменено в версии 3.1: описатели позиционных аргументов могут быть опущены, поэтому '{} {} 'эквивалентно' {0} {1}'.