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 ответ:
скорее всего, вы используете старую версию 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}'.