对于我的一项作业,如果我们可以添加教授尚未在作业说明中告诉我们的新功能,则可以提供额外的学分。这是一个密码保护程序,我正在使用caeser密码将网站/密码保存到列表中。我正在尝试创建基于用户特定输入的密码删除功能。
例如,这是一个随机模板列表:
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不在列表中
关于如何解决此问题的任何建议,或者在正确的方向上为我提供一种更好的方法的建议?
答案 0 :(得分:2)
替换:
input("Enter the password you want to delete: ")
使用
print("Enter the password you want to delete: ")
(您有两个input
,只需删除第一个的值)
答案 1 :(得分:1)
您可以尝试以下方法:
deletePassword = input("Enter the password you want to delete: ")
passwords = [password for password in passwords if password[0] != deletePassword]
答案 2 :(得分:0)
我建议您将密码存储为字典,而不是列表列表。这样一来,您就可以按名称而不是数字索引来查找/访问网站(每次对列表进行修改都会对其进行更改)。
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)