#python #list #authentication
Вопрос:
Я пытаюсь создать простую последовательность входа в терминал, но я не могу понять, как проверить, находятся ли имя пользователя и пароль в одной и той же позиции в списке
usernames = ['username', 'hello'] passwords = ['password', 'world'] # my code so far: from getpass import getpass import time import logins username = input('Username: ') password = input('Password: ') print('Logging In...') time.sleep(1) def check_login(user, pasw): if user in logins.users and pasw in logins.passes: print('Valid') else: print('Invalid user and password, try again.') check_login(username, password)
#Это работает, за исключением того факта, что я могу ввести (имя пользователя, мир) или (привет, пароль) #Я пытаюсь проверить, что каждое имя пользователя и пароль расположены в одном и том же порядке (0,0, 1,1 и т. Д.) И #верните его как действительный. Любая помощь будет признательна 🙂
Ответ №1:
Вы можете использовать zip
:
def check_login(user, pasw): if (user, pasw) in zip(logins.users, logins.passes): print('Valid') else: print('Invalid user and password, try again.')
Если вы собираетесь вызывать этот метод повторно, лучше создать O(1)
структуру поиска:
lookup = dict(zip(logins.users, logins.passes)) def check_login(user, pasw): if lookup.get(user, None) == pasw: print('Valid') else: print('Invalid user and password, try again.')
Комментарии:
1. Почему дв, если можно спросить?
2. это быстрее, чем ответ @srdg, спасибо!
Ответ №2:
Из того, что я понял по этому вопросу, вы можете просто проверить их индексы, используя index
встроенные списки, чтобы подтвердить, находятся ли пользователь и пароль в одном и том же месте.
def check_login(user, pasw): if user in logins.users and pasw in logins.passes and logins.users.index(user)==logins.passes.index(pasw): print('Valid') else: print('Invalid user and password, try again.')
Комментарии:
1. Спасибо! работает отлично и намного быстрее, чем решение, которое я только что придумал.
2. Если это работает на вас, пожалуйста, примите ответ.
3. Я так и сделаю, там написано, что мне нужно подождать 4 минуты.
4. Это не сработает для второго из двух пользователей, у которых один и тот же пароль.