如何在菜单中添加删除,添加和编辑功能?

时间:2018-12-09 21:22:02

标签: python-3.x

努力寻找解决方案,请以我可以学习的方式进行说明,对于给您带来的不便,我们深表歉意。这是我目前所做的一切,我真的找不到找到使之工作的方法。

print('Welcome to the Team Manager')
def mainmenu():
print('---------Main Menu----------')
option = input("""
        1:Display Team Roster.

        2. Add Member.

        3. Remove Member.

        4. Edit Member.

        5. Exit Program.

        Enter one of the following numbers to choose an option:  """)
if option == "1":
    roster()
elif option == "2":
    addmember()
elif option == "3":
    removemember()
elif option == "4":
    editmember()
elif option == "5":
    sys.exit()

def roster():
    roster = ['Toby','Susan','Jerry','Jimmy','Tom','Bob','Jake','Alex','Hannah']
    print("Current Team Roster",roster)
def addmember():
    roster = ['Toby','Susan','Jerry','Jimmy','Tom','Bob','Jake','Alex','Hannah']
    addnmember = int("Add New Member:  ")
    currentroster = roster + addnmember
    print(currentroster)
def removemember():
    roster = ['Toby','Susan','Jerry','Jimmy','Tom','Bob','Jake','Alex','Hannah']
    rmember = input('Enter name of the member you wish to remove: ')
    newroster = roster - rmember

mainmenu()

1 个答案:

答案 0 :(得分:0)

首先,您应该看一下list方法,就像在Python文档中可以找到的那样:https://docs.python.org/3/tutorial/datastructures.html

现在,专门针对您的问题:
1。添加->使用append方法:

roster.append(NewElementToBeAdded)


2。删除->使用remove方法:

roster.append(NewElementToBeAdded)


3。编辑->使用index方法在列表中查找元素,如果找到,则可以使用函数insert将新值直接分配给它,以保持相同的位置:

element = "Susan"
newValue = "Abc"
if element in roster:
    idx = roster.index(element)
    roster.remove(element)
    roster.insert(idx, newValue)

比较strings的一件事是它们区分大小写,因此,如果用户输入susan而不是Susan,则不会将其识别为有效元素。因此,我的修复建议是使用Strings中的方法lower()比较小写值,而您唯一要做的“复杂”操作是使用列表推导仅与您的roster比较还要以小写字母列出。另外,您应该使用capitalize()函数来确保在尝试对list进行操作时,该元素的格式正确,从而为我们提供了以下功能:(您可以使用小写字符串创建列表并大写在打印时也要避免这种情况

element = "susan"
newValue = "Abc"

if element.lower() in [member.lower() for member in roster]:
    elementCapitalized = element.lower().capitalize()
    idx = roster.index(elementCapitalized)
    roster.remove(elementCapitalized)
    roster.insert(idx, newValue)

最后,如果您想在循环内重用此函数,请在循环外取出列表,以创建开始成员,然后只需将此list添加为函数的参数,否则,编写方式将使您的列表在每次循环后始终具有相同的值。

PS:您的问题不是一个好问题,但是由于您是新手,所以我建议阅读有关如何提出好的问题以及社区所接受的问题的文章:
https://stackoverflow.com/help/asking