私は現在、スペースインベーダーのようなゲームを作っています。ゲームはゲームからすべてのスコアを取り込み、並べ替えて、スコアをcsvファイルに保存します。これを行う私の方法は、ソートされていないcsvファイルにスコアを保存し、それらの値を読み込んでソートし、並べ替えられた値をソートされた別のCSVファイルに保存することです。しかし、私は自分のcsvファイルに上位10のスコアしか格納しないようにしたい。これは、私は現在、このプロセスを持っているコードです:Python 2.7:リストからポップアップ
if col:
with open("rec_Scores.csv", "ab") as f: #adding new score into unsorted file
w = csv.writer(f, delimiter = ",")
w.writerow([curr_score])
with open ("rec_Scores.csv", "rb") as csvfile: #reads file, converts values to integers and sorts file (including the new score)
r = csv.reader(csvfile)
scores = list(r)
scores_int = [int(score[0]) for score in scores]
bubbleSort(scores_int)
scores_int.pop()
print(scores_int)
with open("srt_Scores.csv", "wb") as sortfile: #Should write a new csv file every time containing the sorted scores
w = csv.writer(sortfile, delimiter = ",")
w.writerows([[v] for v in scores_int])
私は、これは、このプロセスを行うための最も効率的な方法ではありません知っているが、それは主に動作します。もし誰かが私にプログラムをちょうどトップ10のスコアを保存させるのに役立てることができたら、それは大いに感謝されるでしょう。
P.s: これは私がPythonでcsvファイルを使用して初めて作業したので、面倒で非効率ですが、スコアが格納されてうまくソートされているだけです。値の数を制限したいだけです。
'pandas'はcsvファイルを読み込んだり保存したりすることができます。トップ10を簡単に読み込み、追加、並べ替え、保存することができます – Nullman
変数に' pop() 'を割り当てる必要があります。 : 's = scores_int.pop(); print(s) ' – AChampion
@AChampionそれは彼が飛び出している価値を気にしている場合にのみ当てはまります。それがコードであるかどうかは明らかではない。 (彼はそれを使ってリストの最後の要素を削除しているだけかもしれません)。 – glibdud