60 votes

ValueError: nom du champ de longueur zéro en format python

Double Possible:
“ValueError: longueur zéro nom de champ dans le format” erreur en Python 3.0,3.1,3.2

J'ai passé des heures à essayer de résoudre ce problème mais en vain. J'ai lu ce guide. Je n'ai pas trouvé d'exemples sur la façon de faire ce dont j'ai besoin.

Lorsque je lance le script, j'obtiens cette erreur (en partie omise):

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

Le code est écrit en python 2.6 ou 2.7 mais je exécuter python 3.1. Comment aurais-je besoin de changer le format de sortie, de sorte que cela pourrait fonctionner?

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

Merci pour votre aide.

149voto

phihag Points 89765

Les Chances sont que vous utilisez une ancienne version de Python, et non 3.1. Dans la version 2.6 de Python, vous avez besoin d'indices dans le format de spécifications, comme ceci:

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

Mise à jour de votre version de Python afin de un récent, de préférence 2.7 et 3.2, pour résoudre le problème. Selon la documentation, en laissant de côté les indices numériques devraient travailler en Python 3.1:

Modifié dans la version 3.1: La position de l'argument des prescripteurs peuvent être omis, si "{} {} "est équivalent à" {0} {1}'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X