2017-02-08 31 views
0

私はチュートリアルの後に作成したこのコードを持っており、ファイルに正常に保存されています。私は情報がそこにあることを確かめるためにファイルを物理的にチェックしました。しかし、それを取得することは私に苦労しています。私は数時間それを見つめて、それで間違ったものを見つけることはできません。手順2 - 2 1 - 5 - 9を実行して再実行してから手順6 - 1を実行すると、メニューオプションの2番目のセットが正しくないことがわかります。ファイルに保存し、Pythonでファイルの内容を取得する

これは私が持っているものです。

team.pyクラスファイル

#Team class definition 

class Team: 

    #initializing object 

    def __init__(self, name, phone, jersey): 

     self.__name = name 

     self.__phone = phone 

     self.__jersey = jersey 


    #mutator methods 

    def setname(self, name): 

     self.__name = name 

    def setphone(self, phone): 

     self.__phone = phone 

    def setjersey(self, jersey): 

     self.__jersey = jersey 



    #accessor methods 

    def getname(self): 

     return self.__name 

    def getphone(self): 

     return self.__phone 

    def getjersey(self): 

     return self.__jersey 


    #display template for output 
    def displayData(self): 

     print("") 

     print("Team information: ") 

     print("------------------------") 

     print("Member's Name:", self.__name) 

     print("Phone Number:", self.__phone) 

     print("Jersey Number:", self.__jersey) 

members.pyプログラムファイル

# program functions and import data 

import team 


def displayMenu(): 
    print("===========Main Menu===========") 

    print("1. Team Roster.") 

    print("2. Add Member.") 

    print("3. Remove Member.") 

    print("4. Edit Member.") 

    print("5. Save Data.") 

    print("6. Load Data.") 

    print("9. Exit Program.") 

    print("") 

    return int(input("Selection> ")) 

def printMember(members): 
    if len(members) == 0: 

     print("No members in roster yet.") 

    else: 

     for x in members.keys(): 
      members[x].displayData() 

def addMember(members): 
    newName = input("Enter new member's name: ") 

    newPhone = int(input("Enter member's phone number: ")) 

    newJersey = input("Enter member's jersey number: ") 

    members[newName] = team.Team(newName, newPhone, newJersey) 

    return members 

def removeMember(members): 
    removeName = input("Enter the member's name you wish to remove: ") 

    if removeName in members: 

     del members[removeName] 

     print("\nYou've removed ", removeName) 

    else: 

     print("This name is not in our records.") 

    return members 

def editMember(members): 

    oldName = input("Enter the name of the member you want to edit: ") 

    if oldName in members: 

     newName = input("Enter the member's new name: ") 

     newPhone = int(input("Enter the member's new phone number: ")) 

     newJersey = input("Enter the member's new jersey number: ") 

     members[oldName] = team.Team(newName, newPhone, newJersey) 

    else: 

     print("Member does not exist") 

    return members 

def saveData(members): 

    filename = input("Filename to save: ") 

    print("Saving data...") 

    outFile = open(filename, "wt") 

    for x in members.keys(): 

     name = members[x].getname() 

     phone = str(members[x].getphone()) 

     jersey = members[x].getjersey() 

     outFile.write(name + "," + phone + "," + jersey + "\n") 

    print("Data saved.") 

    outFile.close() 

def loadData(): 

    members = {} 

    filename = input("Filename to load: ") 

    inFile = open(filename, "rt") 

    print("Loading data...") 

    while True: 

     # read in a line of text from the text file 

     inLine = inFile.readline() 

     # if line is empty, stop loading data. 

     if not inLine: 

      break 

     inLine = inLine[:-1] 

     name, phone, jersey = inLine.split(",") 

     members[name] = team.Team(name, phone, jersey) 

    print("Data Loaded Successfully.") 

    inFile.close() 

    return members 

# Running the program 

print("Welcome to the Team Manager") 

members = {} 

menuSelection = displayMenu() 

while menuSelection != 9: 

    if menuSelection == 1: 

     printMember(members) 


    elif menuSelection == 2: 

     members = addMember(members) 


    elif menuSelection == 3: 

     members = removeMember(members) 


    elif menuSelection == 4: 

     members = editMember(members) 

    elif menuSelection == 5: 

     filename = saveData(members) 

    elif menuSelection == 6: 

     filename = loadData() 

    menuSelection = displayMenu() 

print("Exiting Program...") 

私を助けたり、私が(笑)ここでIDEONE

+0

私は通常@ cricket_007を行いますが、私はこのことをやっていましたが、全体のプログラムを入れていないと私のお尻が噛まれてしまいました。[mcve] –

+0

を作成してみてください。残念なことに、全てまたはほとんどすべてが必要です。私はそれを単純化することができますが、それほど多くはありません。あなたが見ることができるように、ステップはすべて異なった方法を取るので、私はそれらをここに置くか、誰もそれを実行してデバッグすることができません。それが問題になった場合は、1つの質問だけで書き直します。 – LOTUSMS

+0

さて、あなたの質問はロードして保存するのですか?それで、なぜあなたは他のすべてを見せたのですか? –

答えて

1

SaveDataをリターンがある:)アルコールになるでしょう何もファイル名ではなく、

filename = saveData(members) 

loadDataはファイル名を返しません。メンバーを返します。

filename = loadData() 

グローバル変数がPythonでどのように機能するかを調べることをお勧めします。 membersのインスタンスが1つだけ必要です。

あなたはCRUD操作を実行するためのより良い方法を探しているなら、Pythonの

のsqliteのモジュールを使用すると、途中で、Pycharmは便利なデバッガを持っています。

+0

私は私が従うとは思わない。私のコードは、あなたが提案したものと同じ方法を示しています。 – LOTUSMS

+0

あなたは 'filename = loadData()'ではなく 'members = loadData()'ではないと言っていますか? – LOTUSMS

+0

それはまさに私が言っていることです。私はあなたの間違いを指摘しています。それを修正する方法は、あなた次第です。私はこれらの問題をデバッグするあなたの能力を信頼します –

関連する問題