Программа проверки паролей Python - Сравнение со значением .pop () не работает - PullRequest
0 голосов
/ 09 сентября 2018

Я начал создавать программу проверки паролей для части моего задания. Он принимает первоначальный ввод от пользователя, сохраняет его во внешнем файле, затем берет другой ввод и проверяет, совпадают ли оба ввода. Если они совпадают, он должен вернуть печатное сообщение. Однако он ничего не возвращает, даже если они совпадают.

#storing passwords in an external file
file = open("passwordlearn.csv", "a+")
password = input("Please enter a password: ")
file.write(password + "\n")
file.close()

#opening a connection to password.csv
temp = open("passwordlearn.csv", "r")
password = temp.read()
temp.close()

#splitting the string up
eachPassword = password.split ("\n")

#creating a list
newlistthree=[]
for eachItem in eachPassword:
    record = eachItem.split(",")
    newlistthree.append(record)
print(newlistthree)

#creating a list with the blank deleted
newlistfour=[]
for eachItem in eachPassword:
    record = eachItem.split(",")
    newlistfour.append(record)
del newlistfour[-1]
print(newlistfour)
firstpassword = newlistfour.pop()
print(firstpassword)

#authentication
passwordcheck = input("Please type your password again: ")
if passwordcheck == firstpassword:
    print("Passwords Match. Please login.")

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

ваша проблема в этой строке record = eachItem.split(","), когда вы делите строку, возвращаемый объект - это список, а не строка. Затем в конце вы пытаетесь сравнить строку со списком, который не совпадает.

Хотя для меня не ясно, почему вы пытаетесь разделить пароль, вы можете заставить свой код работать, пропустив это разделение или добавив в 'newlistthree' только строку пароля, подобную этой:

newlistthree.append(record[0])
0 голосов
/ 09 сентября 2018

Я проверил ваш код и обнаружил, что firstpassword - это список с одним элементом, а passwordcheck - просто строка.

Таким образом, в if passwordcheck == firstpassword: он заканчивается сравнением 'example_password' и ['example_password'], поэтому оно всегда будет ложным.

Возможно, вы захотите переосмыслить порядок очистки и хранения ваших паролей, чтобы сделать newlistfour не списком из одного элемента, а вашим кодом, если вы его измените.на if passwordcheck == firstpassword[0]: тогда должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...