2015-10-28 56 views
1

具體名單我有在它列出的清單:搜索與它列出了名單上刪除,我們搜查

Contact_list = [["Smith", "John", "780 555 3234", "[email protected]"], ["Pitts", "Harry", "780 555 7329", "[email protected]"], ["Fields", "Sara", "780 555 8129", "[email protected]"], ["Smith", "Jane", "780 555 2819", "[email protected]"], ["Unger", "Felix", "302 555 3819", "[email protected]"]] 

我想就姓或姓氏和編輯搜索該特定聯繫人的特定元素。我寫了這樣的代碼:

def EditContact(): 
    editby = raw_input('| 1 | To Search contact and Edit by FirstName:\n| 2 | To Search contact and Edit by LastName: ') 
    if editby == '1': 
     FirstName = raw_input('Firstname: ') 
     EditByFirstName(FirstName) 
    elif editby == '2': 
     LastName = raw_input('Lastname: ') 
     EditByLastName(LastName) 
    else: 
     print("\n----------------------\nIncorrect choice.\n----------------------\n") 

,你能理解想在這裏找到名字或姓氏接觸,並將它們發送到DEF下這裏

def EditByFirstName(First): 
    for x in Contact_list: 
     if (x[1] == First) : 
      print '\n----------------------\n',x[1],x[0],'Named Contact Found!!!! \n----------------------\n' 
      ChangeInformation(x) 
     else: 
      print "\nThis Contact Does Not Exist!!\n----------------------\n" 
def EditByLastName(Last): 
    for x in Contact_list: 
     if (x[1] == Last) : 
      print '\n----------------------\n',x[1],x[0],'Named Contact Found!!!! \n----------------------\n' 
      ChangeInformation(x) 
     else: 
      print "\nThis Contact Does Not Exist!!\n----------------------\n" 

直到這裏一切正常。但在此之後在列表中參加新事物會給出錯誤。所以,問題是在這個代碼塊,但無法找出是什麼原因造成:

def ChangeInformation(x): 
    print "| 1 | To Edit Firstname" 
    print "| 2 | To Edit Lastname" 
    print "| 3 | To Edit PhoneNumber" 
    print '| 4 | To Edit Email' 
    Edit_Choice = raw_input("Please make a choice:") 
    if Edit_Choice == '1': 
     NewFirstName = input("Please Enter New Firstname: ") 
     Contact_list[x[1]] = (NewFirstName) 
     return Contact_list 
    elif Edit_Choice == '2': 
     NewLastName = raw_input("Please Enter New Lasttname: ") 
     Contact_list[x[0]] = NewLastName 
     return Contact_list 
    elif Edit_Choice == '3': 
     NewNumber = raw_input("Please Enter New Number: ") 
     Contact_list[x[2]] = NewNumber 
     return Contact_list 
    elif Edit_Choice == '4': 
     NewEmail = raw_input("Please Enter New Email: ") 
     Contact_list[[x[3]]]= NewEmail 
     return Contact_list 
    else: 
     print("\n----------------------\nIncorrect choice.\n----------------------\n") 

回答

1

當你調用ChangeInformation(x),您是路過xContact_list成員是列表本身。現在,在ChangeInformation,你做到以下幾點

Contact_list[x[0]] = NewLastName 

這將使一個類型的錯誤,因爲x[0]可能會比其他int類型的對象,這是一個列表索引無效。您應該更改它

x[0] = NewLastName 

因爲您已經通過列表成員並刪除return語句。

+0

謝謝!那工作! – Bryan