2016-04-30 10 views
0

私はテキストファイルにある私のリストに番号を付け加えることができません。これまでテキストファイルからリストの値を編集するのに役立つ必要があります。

コード:

def add_player_points(): 
# Allows the user to add a points onto the players information. 

    L = open("players.txt","r+") 
    name = raw_input("\n\tPlease enter the name of the player whose points you wish to add: ") 
    for line in L: 
      s = line.strip() 
      string = s.split(",") 
      if name == string[0]: 
        opponent = raw_input("\n\t Enter the name of the opponent: ") 
        points = raw_input("\n\t Enter how many points you would like to add?: ") 
        new_points = string[5] + points 
    L.close() 

これは、テキストファイルのキーのサンプルです。約100は、ファイル内にあります。

Joe,Bloggs,[email protected],01269 512355, 1, 0, 0, 0, 
                 ^ 

私はこの番号が追加されたい値がその下矢印そこではすでに数、ほか0です。テキストファイルは図のようにplayers.txtと呼ばれています。

完全なコードの回答が参考になります。

+0

私はあなたがしようとしていることを理解していません。テキストファイルに数値を書きたいですか?または、おそらく、あなたは、テキストファイル内の数字からリストを作成し、リストに数字を追加したいですか? –

+0

私がしたいのは、ユーザーがその値の[5]に数字を入力できるようにすることだけです。その数字がテキストファイルに保存されます。したがって、ユーザーが+5ポイントを追加したい場合。数字が5ポイント上がる – Dave

答えて

0

これはおそらく問題です:

new_points = string[5] + points 

あなたが別の文字列に文字列を追加している、あなたはこれが誤入力をチェックするが、想定していない

new_points = int(string[5]) + int(points) 

整数にそれらを変換する必要がありますファイル形式が正しいとユーザーの入力も、それは動作するはずです。

編集:新しい情報でファイルを更新する場合は、問題を3つの部分に分けることがより効果的です。1)プレーヤーの情報を適切なデータ構造に読み込みます。プレイヤー名をキーにした辞書、2)辞書に変更を加える、最後に3)変更をファイルに保存する。したがって、コードを3つの関数に分割する必要があります。いくつかの助けはhereを見つけることができます。

+0

Iveはあなたが推奨する変更を加えました。コードは必要に応じて実行されます。テキストファイルは編集しません。私はテキストファイルに変更を保存する必要がありますが、これは私が行う方法を知らないことです。 – Dave

+0

あなたのコード(またはあなたの質問)にテキストファイルの編集について何もありません。それはもっと複雑です。単純に編集することはできません。新しい値を持つ新しいテキストファイルを生成する方が簡単です(oldから読み込み、newに書き込む)。ファイル全体をユーザーが索引付けした辞書に読み込み、変更を加えて最終的にすべてをファイルに書き戻すほうが簡単です(同じファイル名を保持するため)。 – Cyb3rFly3r

関連する問題