Почему две одинаковые переменные не считаются равными? - PullRequest
0 голосов
/ 18 марта 2019

При программировании чего-либо на python я столкнулся с этой ошибкой, когда 2 переменные, которые, безусловно, равны, не считаются равными, когда они проходят через if X == Y:

Соответствующий сегмент кода:

 usernameinput = input("Enter your username: ")
    print("Just a sec...")
    passwordinput = hashingAlgorithm2()
    for line in Database:
        IDNumber, Username, Password = line.split(",")
        if Username == usernameinput:
            print(passwordinput)
            print(Password)
            if passwordinput == Password:            (this is the line in question)
                print("Test")
                LoggedIn = True
                ID = IDNumber
    if LoggedIn == False:
        triesLeft = triesLeft - 1
        print("Your username or password is wrong, you have", triesLeft ,"tries left.")
        if triesLeft <= 0:
            The_Correct_Password

Соответствующие результаты:

Enter your username: daniel
Just a sec...
Enter your password: **********
12894487843593301576106844
12894487843593301576106844

Your username or password is wrong, you have 2 tries left.

Кто-нибудь знает, почему это происходит?

Я не имею ни малейшего представления о том, в чем даже заключается проблема, поскольку обе переменные показаны равными во время if X == Y

1 Ответ

1 голос
/ 18 марта 2019

Вы можете решить эту проблему, приведя Password к int (при условии, что ваша хеш-функция всегда возвращает int).

   usernameinput = input("Enter your username: ")
   print("Just a sec...")
   passwordinput = hashingAlgorithm2()
   for line in Database:
       IDNumber, Username, Password = line.split(",")
       if Username == usernameinput:
           print(passwordinput)
           print(Password)
           if passwordinput == int(Password):  # Change here          
               print("Test")
               LoggedIn = True
               ID = IDNumber
   if LoggedIn is False:
       triesLeft = triesLeft - 1
       print("Your username or password is wrong, you have", triesLeft ,"tries left.")
       if triesLeft <= 0:
           The_Correct_Password
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...