Как проверить, находятся ли две входные переменные в одной и той же позиции в двух разных списках и возвращаются как допустимые?

#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. Это не сработает для второго из двух пользователей, у которых один и тот же пароль.