球队名单=删除&在Python 3中编辑播放器

时间:2016-05-31 17:43:37

标签: python-3.x

我是编程新手,正在学习OOP和词典。我有一个任务"该程序利用面向对象的编程创建一个成员对象,可以接受玩家的姓名,电话号码和球衣号码。您需要使用字典替换列表,以帮助定位要删除和编辑的对象。"到目前为止,这是我的代码:

班级名单:

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. 退出

  5. 选择→2

    您要删除哪个名称?黎明

    抱歉没有找到Dawn!

    ==========选择菜单==========

    1. 将播放器添加到名册

    2. 从名册中删除播放器

    3. 更改名册中显示的玩家名称

    4. 退出

    5. 选择> 3

      你想改变什么名字?黎明

      ***抱歉没有找到Dawn!

      我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

Morgan已经评论了出了什么问题,但我想我会更多地扩展它,因为你提到你刚刚开始编程。

假设我们在您的输入的第1步,我们调用addPlayer()

products[3]

前三行只是抓住你从命令行插入的信息,它看起来很好。接下来是重要的一行,你有玩家= {},它正在初始化一个名为玩家的字典。这里要认识到的重要一点是每次运行此代码时都要创建一个新字典。这意味着无论何时调用addPlayers,您实际上并没有添加播放器,而是定义一个名为players的新字典并为其添加名称。

还有一个问题是,您在addPlayer中定义的播放器永远不会离开addPlayer方法。因为你在每一种方法中创建玩家(玩家= {}行),所以你实际上永远不会保存调用addPlayer()时创建的任何数据。

理想情况下,你会想要这样的东西:

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

这样可以让你添加/删除/编辑玩家,但这不是你的任务要求你做的。相反,让我们阅读你的作业具体说明的内容。

  

程序利用面向对象编程创建一个可以接受玩家姓名,电话号码和球衣号码的成员对象

那么,什么是成员对象呢?如果您没有任何线索,请查看python documentation on classes。它应该为您提供足够的信息,以确切地知道作业要求您做什么。请密切关注“类对象”部分,因为它有一些代码示例可以真正帮助您将当前代码转换为OOP格式。