2016-10-11 83 views
0

學習列表和數組,我不確定這個程序出錯的地方。請記住,我仍然是新的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...") 
+0

你的'append()'是空的。它什麼都不做。 –

+0

但它說追加(名稱)。只需要更好的澄清 –

回答

0

剛開始的時候,你已經有了正確的想法,並取得了良好的進展。主要問題是你如何定義namelist = 0,使其成爲一個數字。相反,namelist需要實際list爲您添加或追加任何東西。此外,你append()方法是沒有必要的,因爲一旦你定義namelistlist,您可以使用內置的list.append()方法,而無需編寫自己的方法。 所以這裏有一些建議/更正,一旦你的基礎工作正常,你應該能夠找出其餘的錯誤修正和邏輯。

  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是一個列表,我們可以使用nameslistbuilt-inlen()方法來檢查它是否在打印時出它的內容(如果有的話)是空的:

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

既然Add()菜單選項正在爲namelist添加一個名稱,您應該可以使用類似的邏輯實現刪除和編輯名稱到列表。

+0

在幾個地方fxing我的代碼我有更好的功能,但我在嘗試訪問list.typeError時得到此錯誤:無法訂購的類型:list()> int() –

+0

哪一行給你那個'TypeError'? – davedwards

+0

Traceback(最近一次調用最後一次): 文件「C:/Users/Family/PycharmProjects/Week4/.idea/Team Management.py」,第48行,在 printmembers() 文件「C:/ Users/Family /PycharmProjects/Week4/.idea/Team Management.py「,第14行,在printmembers 如果名單> 0: TypeError:無法訂購的類型:list()> int() –

0

你應該考慮初始化列表是空的,而不是零(除非你想要的元素)。

namelist = list() 

此外,您的附加方法不會執行任何操作。這也是相當多的,因爲你可以使用列表的append方法。

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

如果你確實想使自己的append方法你應該明白,在函數定義的變量輸入,所以只是說def append(name)將不執行任何操作。在這種情況下,name是您應用於輸入參數的標識符。你可以輕鬆地將它稱爲任何你想要的。理解這一點的好方法是給參數賦一個不同於你傳遞的變量的變量名稱。就像這樣:

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

你可以叫你追加方法使用addMember這樣的:

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

從輸入獲得的名稱後,您撥打的append(name)方法,但你的append方法不做任何事情。

在你的append方法中,你必須把你得到的名字加到你的名字列表中,就像你在editmember方法中做的那樣。