1

2.7 を実行している Python 初心者です。

関数を使用してテキストを生成し、関数によって生成されたテキストをファイルに出力するプログラムを作成しようとしています。

Pythonで関数を印刷しても問題ありません

手動で入力したテキストの出力に問題はありません: (このように) http://codepad.org/JrcUTZfC

しかし、関数で生成されたテキストを出力しようとすると、機能しません: http://codepad.org/Wyj5Li8Y

通常、「文字バッファー」エラーが発生します。

私が別のことをする必要があることを教えてください。

4

2 に答える 2

4

おそらく、文字列を出力するのではなく、関数から文字列を返したいと思うでしょう。このようなもの:

def fn(a,b,c):
    return "Template string {0} {1} {2}".format(a,b,c)

反復/連結部分に関しては、これで必要なことを実行できます。改行文字 ('\n') を明示的に追加する必要があることに注意してください。これは、print を使用している場合には当てはまりません。

def iter_cat(a,b):
    x = ""
    while a < b:
        x += 'This is string {0}, {1}\n'.format(a,b) # x gets previous x with "This.." appended
        a += 1
    return x

ありがとう。

于 2012-08-01T18:37:29.973 に答える
1

問題は、ファイルへの出力の書き込みではなく、関数自体にあります。「return」を使用せずに関数を記述しました。これはPythonでは有効ですが、関数がデフォルトでNoneを返すことを意味します。

言う代わりに

print "votes%d_%d.append(v%d_%d_%d)" % (b,c,a,b,c,)

使用する

data_to_write = "votes%d_%d.append(v%d_%d_%d)" % (b,c,a,b,c,)
data_to_write_two = # etc.
return data_to_write, data_to_write_two #etc. as needed

次に、以前と同じように関数を呼び出すことができます

x, x2 = myfunc()
out_file = open("code.txt", "w")
out_file.write(x)
#etc. 

.writeを正しく使用していましたが、書き込んでいたのはNoneだけでした。「印刷」は、ファイルや変数ではなく、端末とのみ通信することを忘れないでください。

于 2012-08-01T18:52:03.740 に答える