1

Python シェルでピラミッド形式で表示される単語の文字列がありますが、それらを .txt ファイルに移動しようとすると問題が発生します。

問題は、プログラムが各文字を取得して新しいファイルに書き込むことですが、最初の行にのみ書き込み、前の行を新しい行に置き換えるだけで、最終的にファイルには最後の行しか含まれません。

書き込み関数に追加しようとしまし+'\n'たが、その結果、ピラミッドの位置合わせが失われます。

テキストファイルの1行目、2行目などを選択して書き込むことができれば解決ですが、そのような解決策が見つかりません。

コードの一部は次のようになります。

def pyramid(text):

    for i in text:
        line = string.center(i)
        afile = open("name.txt", "w")
        for row in text:
            afile.write(row)

入力「テキスト」は、単語を含むネストされたリストです。

4

4 に答える 4

3

問題は、反復ごとにファイルを書き込みモードで開いているため、ファイルが最初に切り捨てられてから新しい行を書き込むたびに発生することです。

ループの外でファイルを開きます。

In [18]: text=['words words','words words words','words words words words']

def pyramid(text):
    with open("abc","w") as f:
        max_width=len(text[-1])
        for line in text: 
            f.write("{0:^{1}s}\n".format(line,max_width))  #use string formatting
   ....:             

In [20]: pyramid(text)                                                

In [21]: print open("abc").read()
      words words      
   words words words   
words words words words

文字列の書式設定:

^ : 使用可能なスペース内でフィールドを強制的に中央に配置します。

于 2013-04-14T20:36:37.507 に答える
2

オプションを使用しaてファイルを開くと、ファイルが追加モードで開かれます。追加モードでは、何かが書き込まれるたびに、上書きするのではなく、最後に追加します。このプログラムが実行されるたびに、常に一番下から開始されることに注意してください。最初からやり直す前に、毎回ファイルをクリアする必要があります。

于 2013-04-14T20:33:49.687 に答える