猿问

Python:根据 input() 从列表中删除项目?

对于我的一项作业,如果我们能添加教授在作业说明中尚未告诉我们要做的新功能,则可以提供额外的学分。这是一个密码保护程序,我正在使用凯撒密码将网站/密码保存到列表中。我正在尝试创建基于用户特定输入的密码删除功能。


例如,下面是一个随机模板列表:


passwords = [["facebook", "gGjjI%%%66"], ["youtube", "coYtF###12$"]]

假设我想删除youtube密码列表中的密码。我做了一些研究,似乎remove()可能是我试图做的事情的一个不错的选择,但我在将其付诸实践时遇到了问题。


if choice == '6':

    input("Enter the password you want to delete: ")

    for keyvalue in passwords:

        print(keyvalue[0])

    deletePassword = input()


    for i in range(len(passwords)):

        if deletePassword in passwords[i][0]:

            passwords.remove(deletePassword)

这里的问题是,在我输入要删除密码的网站名称后,就像在这种情况下的youtube一样,在我点击Enter之后,它会重新打印列表,其中仍然包含我要删除的内容,然后如果我再次点击Enter,它将抛出:ValueError:list.remove(x):x不在列表中


关于如何解决这个问题的任何建议,或者为我指出正确的方向,如何以更好的方式做到这一点?


至尊宝的传说
浏览 145回答 3
3回答

凤凰求蛊

取代:input("Enter the password you want to delete: ")跟print("Enter the password you want to delete: ")(你有两个s,你只需删除第一个的值)input

皈依舞

你可以试试这个:deletePassword = input("Enter the password you want to delete: ")passwords = [password for password in passwords if password[0] != deletePassword]

慕哥9229398

我建议您将密码存储为字典,而不是列表列表。这允许您按名称而不是数字索引(每次修改列表时都会更改)来查找/访问站点。passwords = [["facebook", "gGjjI%%%66"], ["youtube", "coYtF###12$"]]passwords = dict(passwords)# passwords is now {'facebook': 'gGjjI%%%66', 'youtube': 'coYtF###12$'}if choice == '6':    print("Enter the site name of the password you want to delete: ")    for site in passwords:        print(' ', site)    deletePassword = input('>')    if deletePassword in passwords:        passwords.pop(deletePassword)
随时随地看视频慕课网APP

相关分类

Python
我要回答