Python Forum
need help removing an item from a list
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
need help removing an item from a list
#1
it is choice 7 if anyone can help it'd be appreciated
import csv
import sys

#The password list - We start with it populated for testing purposes
passwords = [["yahoo","XqffoZeo"],["google","CoIushujSetu"]]


#The password file name to store the passwords to
passwordFileName = "samplePasswordFile"

#The encryption key for the caesar cypher
encryptionKey=16

#Caesar Cypher Encryption
def passwordEncrypt (unencryptedMessage, key):

    #We will start with an empty string as our encryptedMessage
    encryptedMessage = ''

    #For each symbol in the unencryptedMessage we will add an encrypted symbol into the encryptedMessage
    for symbol in unencryptedMessage:
        if symbol.isalpha():
            num = ord(symbol)
            num += key

            if symbol.isupper():
                if num > ord('Z'):
                    num -= 26
                elif num < ord('A'):
                    num += 26
            elif symbol.islower():
                if num > ord('z'):
                    num -= 26
                elif num < ord('a'):
                    num += 26

            encryptedMessage += chr(num)
        else:
            encryptedMessage += symbol

    return encryptedMessage

def loadPasswordFile(fileName):

    with open(fileName, newline='') as csvfile:
        passwordreader = csv.reader(csvfile)
        passwordList = list(passwordreader)

    return passwordList

def savePasswordFile(passwordList, fileName):

    with open(fileName, 'w+', newline='') as csvfile:
        passwordwriter = csv.writer(csvfile)
        passwordwriter.writerows(passwordList)



while True:
    print("What would you like to do:")
    print(" 1. Open password file")
    print(" 2. Lookup a password")
    print(" 3. Add a password")
    print(" 4. Save password file")
    print(" 5. Print the encrypted password list (for testing)")
    print(" 6. Quit program")
    print(" 7. Delete a password")
    print("Please enter a number (1-7)")
    choice = input()

    if(choice == '1'): #Load the password list from a file
        passwords = loadPasswordFile(passwordFileName)

    if(choice == '2'): #Lookup at password
        print("Which website do you want to lookup the password for?")
        for keyvalue in passwords:
            print(keyvalue[0])
        passwordToLookup = input()

        ####### YOUR CODE HERE ######



        #You will need to find the password that matches the website
        #You will then need to decrypt the password

        #
        #1. Create a loop that goes through each item in the password list
        #  You can consult the reading on lists in Week 5 for ways to loop through a list
        #
        #2. Check if the name is found.  To index a list of lists you use 2 square backet sets
        #   So passwords[0][1] would mean for the first item in the list get it's 2nd item (remember, lists start at 0)
        #   So this would be 'XqffoZeo' in the password list given what is predefined at the top of the page.
        #   If you created a loop using the syntax described in step 1, then i is your 'iterator' in the list so you
        #   will want to use i in your first set of brackets.
        #
        #3. If the name is found then decrypt it.  Decrypting is that exact reverse operation from encrypting.  Take a look at the
        # caesar cypher lecture as a reference.  You do not need to write your own decryption function, you can reuse passwordEncrypt
        #
        #  Write the above one step at a time.  By this I mean, write step 1...  but in your loop print out every item in the list
        #  for testing purposes.  Then write step 2, and print out the password but not decrypted.  Then write step 3.  This way
        #  you can test easily along the way.
        #


        ####### YOUR CODE HERE ######


    if(choice == '3'):
        print("What website is this password for?")
        website = input()
        print("What is the password?")
        unencryptedPassword = input()

        ####### YOUR CODE HERE ######
        encryptedPassword = passwordEncrypt
        newsitepassword = [website, encryptedPassword]
        passwords.append (newsitepassword)
        #You will need to encrypt the password and store it in the list of passwords

        #The encryption function is already written for you
        #Step 1: You can say encryptedPassword = passwordEncrypt(unencryptedPassword,encryptionKey)]
        #the encryptionKey variable is defined already as 16, don't change this
        #Step 2: create a list of size 2, first item the website name and the second item the password.
        #Step 3: append the list from Step 2 to the password list


        ####### YOUR CODE HERE ######

    if(choice == '4'): #Save the passwords to a file
            savePasswordFile(passwords,passwordFileName)


    if(choice == '5'): #print out the password list
        for keyvalue in passwords:
            print(', '.join(keyvalue))

    if(choice == '6'):  #quit our program
        sys.exit()

    if(choice == '7'):
        print("What website is this password for?")
        website = input()
        print("What is the password?")
        passwordToDelete = input()

        encryptedPassword = passwordEncrypt
        newsitepassword = [website, encryptedPassword]
        passwords.remove (newsitepassword)


    print()
    print()
Error:
line 149, in <module> passwords.remove (newsitepassword) ValueError: list.remove(x): x not in list
Reply
#2
How about a little debugging and printing out the value of the list newsitepassword (a confusing name for a deletion candidate) and also for passwords just before you try to remove it. You need to check that the passwords list of lists includes the newsitepassword list.

Then try setting and removing same in the console.
I am trying to help you, really, even if it doesn't always seem that way
Reply
#3
if(choice == '7'):
        print ("What website password would you like to delete?")
        for keyvalue in passwords:
            print(keyvalue[0])
        passwordToDelete = input()

    for i in range (len(passwords)):
        if passwordToDelete in passwords [i][0]:
            passwords.remove
How about this?
Reply
#4
Does it work? Did you do the debugging I suggested?

Please show us the output of the debugging if you still have a problem.
I am trying to help you, really, even if it doesn't always seem that way
Reply
#5
Check line 116 and what you are doing there
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  change item in column based on the item before[solved] amdi40 4 1,750 Jan-11-2022, 04:50 PM
Last Post: amdi40
  Removing all strings in a list that are of x length Bruizeh 5 3,156 Aug-27-2021, 03:11 AM
Last Post: naughtyCat
  Removing existing tuples from a list of tuple Bruizeh 4 2,767 May-15-2021, 07:14 PM
Last Post: deanhystad
  Removing items in a list cap510 3 2,331 Nov-01-2020, 09:53 PM
Last Post: cap510
  removing item pastakipp 3 1,895 Oct-25-2020, 09:15 PM
Last Post: deanhystad
  Python Adding +1 to a list item cointained in a dict ElReyZero 1 2,063 Apr-30-2020, 05:12 AM
Last Post: deanhystad
  Removing items from list slackerman73 8 4,386 Dec-13-2019, 05:39 PM
Last Post: Clunk_Head
  Determine if a list contains a specific number of an item flannel_man 3 4,881 Nov-12-2016, 04:46 PM
Last Post: micseydel

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020