2016-04-02 6 views
0

問題は私が持っているのは、ユーザーが3つのクラスから選ぶことができるクイズです。彼らはクイズを完了するために進んで、現在、彼らの名前とスコアは正しいクラス(3つの異なるクラスの3つの異なるファイルがあります)のテキストファイルに保存されます。同じユーザーがクイズを完了した場合、どのようにすれば、学生が得た最後の2つのスコアだけがすべてのスコアではなくファイルに保存されるのですか?最終結果をテキストファイルに保存する

if classChoice ==1: 
     File=open("A.txt","a+") 
     File.write(names+","+str(score)+"\n") 
     File.close() 

if classChoice ==2: 
     File=open("B.txt","a+") 
     File.write(names+","+str(score)+"\n") 
     File.close() 
if classChoice ==3: 
     File=open("C.txt","a+") 
     File.write(names+","+str(score)+"\n") 
     File.close() 
+0

あなたのスコアは_append_したくないのですが、それらを_overwrite_したいですか? – MrP01

+0

@ MrP01 um私は、他のユーザーの以前のスコアを削除したいと思っていませんが、ユーザーが既に2回以上クイズを行っている場合は、odestスコアは –

答えて

0

明らかに、あなたが定義した特定のデータ構造にデータを保存したいとします。あなたの場合、特定の生徒の最後の2つのスコアのみを保存することに興味があります。

のは、あなたのファイル "A.TXT" を見てどうするかを観察してみましょう:

ジョン、90

サム、80

アリス、100

サム、90

ジョン、100

毎回テキストを追加するのではなく、まずファイル全体を作成し、辞書のように作業できるように変換します。我々の場合には

def convert_file_to_dict(path): 
    d = {} 
    lines = open(path).splitlines() 
    for line in lines: 
    name, grade = line.split(',') 
    if name in d: 
     d[name].append(grade) 
    else: 
     d[name] = [grade] 
    return grade 

私はconvert_file_to_dict('A.txt')と呼ぶことにしますならば、私は{ 'John':['90','100'], 'Sam':['80','90'], 'Alice':['100'] }で構成された辞書を受信します。グレードのリスト内の順序は、 "A.txt"の行の順番で保持されていることに注意してください。あなただけの最後の2つのグレードが保たれていることを制御することができ、その辞書と今

def insert_new_grade(grades_dict, name, grade): 
    if name in grades_dict: 
    if len(grades_dict[name]) == 1: 
     grades_dict[name].append(str(grade)) 
    else: 
     grades_dict[name] = grades_dict[name][1:] + [str(grade)] 
    else: 
    grades_dict[name] = [str(grade)] 

をあなたが必要とするすべてのファイルにこの辞書を変換する関数を記述することである... あなたがお勧めします* collections.defaultdictのような有益なオブジェクトを使用していましたが、私はここで過度に過ごしたくありませんでした...

+0

の右の削除です。私は試してみて、これを私のところに実装してはいけません。正直である方法を知っていないので、それはorkとは思わないでしょう。私はこれをクラスの文 –

+0

のように入れます。実際にコードのどの部分が私のコードに追加されてebに保存される必要がありますか?私は教師のための機能を持っているだろう()誰が見るクラスを選択することができ、スコアが印刷されるので、ファイルに書き込まれた後すぐに傷跡を印刷したくない。 –

+0

?????????助けてください –

関連する問題