Double Possible:
“ValueError: longueur zéro nom de champ dans le format” erreur en Python 3.0,3.1,3.2J'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.
Réponse
Trop de publicités?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}'.