0

コーディングは初めてで、Python を 1 か月しか勉強していません。

ユーザー名、スコア、およびテストを完了した時間を格納するタプルのリストを含むファイルを unpickle します。リストには最大 10 個のタプルが保持されますが、これを unpickle して for ループに使用すると、表示するタプルは 1 つしか取得できません。それらを一列に並べて表示したい。それはおそらく小さなことですが、私は空白でそれを理解できないので、誰かが助けてくれることを願っています.

現在、これは実行時の外観です。

_______HighScore Board_______
NAME    SCORE   TIME OF ENTRY
bill 28.02 03:27PM 23-November-2012

他の保存されたスコアは表示されないので、リストを実行してタプルを出力し続けるために別のループを作成する必要がありますか?

コードのスニペットは次のとおりです。

前もって感謝します

4

1 に答える 1

1

あなたのコメント「ピクルスのリストに追加するのではなく、上書きしている可能性がありますか?」正しい。あなたがそれについて考えるならば、それは他に何もできません:

open (..., 'w') は、書き込み用にファイルを開き、ファイルが既に存在する場合は長さ 0 に切り捨てます。つまり、以前のコンテンツは破棄されます。

pickle は、ネットワーク経由で保存または渡すことができるデータ パケットを作成します。この場合、開いて切り捨てられたファイルに書き込みます。このファイルには、ピクルス化したものだけが含まれます。

ファイルを開いたときに残りを消去したため、コンテンツを取得するときは、最後に入力したもののみが表示されます。

できることは 2 つあります。追加用にファイルを開くと ('wb' ではなく 'ab')、複数のピクルス化されたものを次々に書き込むことができます。また、それらを次々に読むことができるはずです。ただし、ファイルが大きすぎてすべてをメモリにロードしたくない場合を除き、これはお勧めしません。

通常、ボードに何かを追加するときは、現在のボードを読み取り、リストに項目を追加し、結果のボードをファイルに書き戻す必要があります (意図的に古いボードを上書きします)。

于 2012-11-23T18:34:51.553 に答える