2016-05-31 39 views
1

我是新手,正在學習編程和學習OOP和字典。我有一個任務,「該程序利用面向對象編程創建一個可以接受玩家姓名,電話號碼和球衣號碼的成員對象,您需要用字典替換該列表以幫助定位要移除的對象和編輯「。這裏是我到目前爲止的代碼:Team Roster =在Python中刪除和編輯播放器3

類名冊:

def __init__(self, name, phone, number): 
    self.__name = name 
    self.__phone = phone 
    self.__number = number 

def setName(self, name): 
    self.__name = name 

def setPhone(self, phone): 
    self.__phone = phone 

def setnumber(self, number): 
    self.__number = number 

def getName(self): 
    return self.__name 

def getPhone(self): 
    return self.__phone 

def getNumber(self): 
    return self.__number 

def displayData(self): 
    print("") 
    print("Player's Information") 
    print("-------------------") 
    print("Player's Name:", self.__name) 
    print("Player's Telephone number:", self.__phone) 
    print("Player's Jersey number:", self.__number) 

def displayMenu(): 
    print("==========Selection Menu==========") 
    print("1. Add a Player to the Roster") 
    print("2. Remove a Player from the Roster") 
    print("3. Change a Player Name displayed in the Roster") 
    print("4. Quit") 
    print() 
    return int(input("Selection>")) 

def addPlayer(): 
    newName = input("Add a player's Name: ") 
    newPhone = input("Telephone number: ") 
    newNumber = input("Jersey number: ") 
    players = {} 
    players[newName] = newName, newPhone, newNumber 

def removePlayer(): 
    removeName = input("What name would you like to remove? ") 
    players = {} 
    if removeName in players: 
     del players[removeName] 
    else: 
     print("Sorry", removeName, "was not found!") 

def editPlayer(): 
    oldName = input("What name would you like to change? ") 
    players = {} 
    if oldName in players: 
     newName = input("What is the new name? ") 
     print("***", oldName, "has been changed to", newName) 
    else: 
     print("***Sorry", oldName, "was not found!") 

然而,當我嘗試刪除播放或編輯一個球員,我得到:

選擇> 1

添加玩家的姓名:Dawn

電話號碼:555-5555

球衣號碼:12

==========選擇菜單==========

  1. 添加一個球員名冊

  2. 從名冊中刪除播放器

  3. 更改玩家暱稱顯示在花名冊

  4. 退出

選擇> 2

你想什麼名字刪除? Dawn

對不起黎明沒有被發現!

==========選擇菜單==========

  1. 添加一個球員名冊

  2. 從名冊中刪除播放器

  3. 更改玩家暱稱顯示在花名冊

  4. 退出

選擇> 3

你想改變什麼名字?黎明

***抱歉未找到黎明!

我在這裏做錯了什麼?

+0

您每次調用函數時都重新創建'玩家',您需要將其分配給類屬性。你應該重新閱讀關於類如何工作的教程。 –

回答

1

摩根已經評論出了什麼問題,但是我認爲自從你提到你剛剛開始編程以來,我會擴大一點。

說我們是在你輸入的第1步,我們稱之爲addPlayer()

def addPlayer(): 
    newName = input("Add a player's Name: ") 
    newPhone = input("Telephone number: ") 
    newNumber = input("Jersey number: ") 
    players = {} 
    players[newName] = newName, newPhone, newNumber 

前三行只是要抓住你的命令行插入的信息,它看起來不錯。重要的一行是下一個你擁有players = {}的地方,它正在初始化一個名爲玩家的字典。這裏要認識到的重要一點是,您每次運行代碼時都會創建一個新字典。這意味着無論何時調用addPlayers,實際上並不是添加播放器,而是定義一個名爲播放器的新詞典併爲其添加名稱。

還有一個問題,您在addPlayer中定義的玩家永遠不會離開addPlayer方法。因爲您使用每種方法創建玩家(玩家= {}行),所以您實際上從不保存在調用addPlayer()時創建的任何數據。

理想情況下,你會想是這樣的:

players = {} # One definition used by all methods 

def addPlayer(players): # players as an argument 
    newName = input("Add a player's Name: ") 
    newPhone = input("Telephone number: ") 
    newNumber = input("Jersey number: ") 
    # Don't redefine it! 
    players[newName] = newName, newPhone, newNumber 

def removePlayer(players): # players as an argument 
    removeName = input("What name would you like to remove? ") 
    # Don't redefine it! 
    if removeName in players: 
     del players[removeName] 
    else: 
     print("Sorry", removeName, "was not found!") 

# rest of code adjusted 

這會工作,並允許您添加/刪除/編輯播放器,但它是你的任務要你做什麼。相反,讓我們來看看你的任務具體說什麼。

該程序利用編程創建成員對象,它可以接受玩家的名字,電話號碼和球衣號碼

那麼,什麼是一個成員對象,然後面向對象的?如果你不知道,請查看python documentation on classes。它應該給你提供足夠的信息,以確切知道作業要求你做什麼。請密切關注「類對象」部分,因爲它有一些代碼示例,可以幫助您將當前代碼轉換爲OOP格式。