可能性のある複製:
「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()
ご協力いただきありがとうございます。
おそらく、古いPythonバージョンであり、3.1ではありません。Python 2.6では、次のようなフォーマット仕様のインデックスが必要です。
"{0} {1}\n".format(x,y)
Pythonバージョンを最新バージョン、できれば2.7または3.2に更新して問題を修正します。ドキュメントによると、数値インデックスは省略します Python 3.1 :
バージョン3.1で変更:位置引数指定子は省略できるため、「{} {}」は「{0} {1}」と同等です。