添加访问和删除python列表中的项目

时间:2016-10-11 01:22:23

标签: python

学习列表和数组,我不知道这个程序出错了。请记住,我仍然是python的新手。不确定我是否正确行事。我已经阅读了一些教程,也许我没有抓住列表和数组。我已经到了你可以输入名称的地方,但它没有转移到列表,然后我得到的列表不断变空,以及代码中其他函数下的其他错误。

 def display_menu():
    print("")
    print("1. Roster ")
    print("2. Add")
    print("3. Remove ")
    print("4. Edit ")
    print("9. Exit ")
    print("")
    return int(input("Selection> "))


def printmembers():
        if namelist > 0:
            print(namelist)
        else:
            print("List is empty")


def append(name):
    pass


def addmember():
    name = input("Type in a name to add: ")
    append(name)

def remove():
    pass

def removemember():
    m = input("Enter Member name to delete:")
    if m in namelist:
        remove(m)
    else:
        print(m, "was not found")

def index():
    pass

def editmember():
    old_name = input("What would you like to change?")
    if old_name in namelist:
        item_number = namelist.index(old_name)
        new_name = input("What is the new name? ")
        namelist[item_number] = new_name
    else:
        print(old_name, 'was not found')


print("Welcome to the Team Manager")

namelist = 0

menu_item = display_menu()

while menu_item != 9:
    if menu_item == 1:
        printmembers()
    elif menu_item == 2:
        addmember()
    elif menu_item == 3:
        removemember()
    elif menu_item == 4:
        editmember()
    menu_item = display_menu()
print("Exiting Program...")

3 个答案:

答案 0 :(得分:0)

首先,您已经有了正确的想法,并且您取得了良好的进展。主要问题是你如何定义namelist = 0,使其成为一个数字。相反,namelist需要是实际的list才能为其添加或附加任何内容。此外,您没有必要使用append()方法,因为一旦您将namelist定义为list,您就可以使用内置的list.append()方法,而无需编写自己的方法。 所以这里有一些建议/更正,一旦你的基础工作正常,你应该能够解决其余的bug修复和逻辑。

  1. 由于您没有任何main()方法,因此您可以定义namelist 第一行代码,在任何其他代码之前,所以它是 在每种方法中引用:
    namelist = [] # an empty list

  2. addmember()方法更改为:

    def addmember(): name = raw_input("Type in a name to add: ") namelist.append(name)

  3. 由于namelist是一个列表,我们可以使用built-in上的len() nameslist方法检查打印出来时是否为空内容(如果有的话):

    def printmembers(): if len(namelist) > 0: # Get the length of the list print(namelist) else: print("List is empty")

  4. 现在Add()菜单选项正在为namelist添加名称,您应该能够使用类似的逻辑实现删除和编辑名称。

答案 1 :(得分:0)

您应该考虑将列表初始化为空而不是零(除非您需要该元素)。

namelist = list()

此外,您的append方法不会执行任何操作。它也非常不必要,因为你可以使用list的append方法。

def addmember():
    name = input("Type in a name to add: ")
    namelist.append(name)

如果你确实想制作自己的追加方法,你应该明白函数定义中的变量是输入,所以只是说def append(name)不会执行任何操作。在这种情况下,name是您要应用于输入参数的标识符。您可以轻松地将其称为任何您想要的东西。理解这一点的一个好方法是为参数分配一个与传递它的变量名不同的变量名。像这样:

def append(nameToAppend):
    namelist.append(nameToAppend)

您可以在addmember中调用append方法,如下所示:

def addmember():
    name = input("Type in a name to add: ")
    append(name)

答案 2 :(得分:0)

从输入中获取名称后,您调用append(name)方法,但您的append方法还没有做任何事情。

在你的追加方法中,你必须将你得到的名字添加到你的名单,就像你在editmember方法中所做的那样。