首页 > 解决方案 > 为什么我的编辑功能是添加而不是编辑成员?

问题描述

我正在尝试为我的班级建立一个团队名册。我得到了代码不会产生任何错误的地方,但是当我编辑一个成员时,它会将一个成员添加到字典中,而不是编辑我告诉它的成员。

对于作业,我们必须有一个类(我还不完全理解这一点),而且我之前写过一个代码,当我们只是添加名称时,我能够获得一个功能代码,主要使用一段时间循环,但我已经删除了分数,因为我没有 def 语句。

class nameClass:
    name = ""
    phoneNumber = ""
    jerseyNumber = ""

    def __int__(self, name, phoneNumber, jerseyNumber):
        self.name = name
        self.phoneNumber = phoneNumber
        self.jerseyNumber = jerseyNumber

    def setname(self, name):
        self.name = name
    def setphoneNumber(self, phoneNumber):
        self.phoneNumber = phoneNumber
    def setjerseyNumber(self, jerseyNumber):
        self.jerseyNumber = jerseyNumber

    def getname(self):
        return self.name
    def getphoneNumber(self):
        return self.phoneNumber
    def getjerseyNumber(self):
        return self.jerseyNumber
    def displayData(self):
        print(" ")
        print("Player information: ")
        print("-------------------------")
        print("Name: ", self.name)
        print("Phone number: ", self.phoneNumber)
        print("Jersey number: ", self.jerseyNumber)

def displayMenu():
    print("=========Main Menu=========")
    print("1. Display Roster.")
    print("2. Add Member.")
    print("3. Remove Member.")
    print("4. Edit Member.")
    print("9. Exit Program.")
    print(" ")
    return int(input("Selection > "))

def printMembers(members):
    if menuSelection == 1:
        print("Team Roster:")
        for x in members.keys():
            print("Name: ", x, "\tPhone Number: ", x, "\tJersey Number: ", members[x])
        print()

def addMember(members):
    if menuSelection == 2:
        newName = input("Enter new member's name: ")
        newphoneNumber = int(input("Enter member's phone number: "))
        newjerseyNumber = int(input("Enter member's jersey number: "))
        members[newName] = (newName, newphoneNumber, newjerseyNumber)
    return members

def removeMember(members):
    if menuSelection == 3:
        name = input("Enter the member's name you would like to remove: ")
        if name in members:
            del members[name]
        else:
            print("Member: ", name, "not found.")
    return members

def editMember(members):
    if menuSelection == 4:
        oldName = input("Enter the name of the member you would like to edit: ")
        if oldName in members:
            newName = input("Enter the member's new name: ")
            newphoneNumber = int(input("Member's new phone number: "))
            newjerseyNumber = int(input("Member's new jersey number: "))
            members[newName] = (newName, newphoneNumber, newjerseyNumber)
        else:
            print("No such member in memory.")
    return members

print("Welome to the Team Manager")
members = {}
menuSelection = displayMenu()

while menuSelection != 9:
    if menuSelection == 1:
        printMembers(members)
    elif menuSelection == 2:
        members = addMember(members)
    elif menuSelection == 3:
        members = removeMember(members)
    elif menuSelection == 4:
        members = editMember(members)
    menuSelection = displayMenu()
print("Exiting Program...")

就像我说的那样,运行时一切似乎都运行良好,除非您意识到当您打印花名册时,它会添加一个新成员,而不是像您告诉它的那样进行编辑。

标签: pythonclassdictionaryedit

解决方案


更改您的 printMembers():

def printMembers(members):
    if menuSelection == 1:
        print("Team Roster:")
        for key, value in members.items():
            print("Name: ", key, "\tPhone Number: ", value[1], "\tJersey Number: ", value[2])
        print()

试试看。


推荐阅读