我是编程新手,正在学习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
==========选择菜单==========
将播放器添加到名册
从名册中删除播放器
更改名册中显示的玩家名称
退出
选择→2
您要删除哪个名称?黎明
抱歉没有找到Dawn!
==========选择菜单==========
将播放器添加到名册
从名册中删除播放器
更改名册中显示的玩家名称
退出
选择> 3
你想改变什么名字?黎明
***抱歉没有找到Dawn!
我在这里做错了什么?
答案 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格式。