Проверка списка на имеющиеся данные

у меня появилась такая проблема, решил сделать небольшую регистрацию, решил сделать список, в который в одну ячейку будет записываться имя и пароль, но вот задача, я немного не продумал систему входа, я не могу сделать так, чтобы человек, когда вводит данные(имя и пароль), его данные сравниваются с данными списка и если такие данные есть, то он входит, а если таких данных нет , то ему предлагают зарегистрироваться, но я не могу это сделать, можете помочь, код прикреплю внизу

base_of_information=[]
def registration():
    print("Введите ваше имя: ",end='')
    name=input()
    print("Введите пароль:")
    password=input()
    while len(password)<4:
        print("Сорян, ваш пароль слишком маленький, увеличьте его на ",4-len(password))
        print("Введите пароль:")
        password=input()
    base_of_information.append([name,password])
    

print("Добро пожаловать в справочник!\n ")
print("Хотите зарегистрироваться ")
answ_1=input(": ")
if answ_1=="да":
    registration()
elif answ_1=="нет":
    print("хотите войти?")
    answ_2=input(": ")
    if answ_2=="да":
        name=input("Введите имя: ")
        password=input("Введите пароль: ")
        for x in base_of_information():
            if name and password ==base_of_information(x):
                print('Chirp!')
            else:
                print("Вас нету в базе данных! ")
            

Ответы (2 шт):

Автор решения: Tehnorobot

Попробовал реализовать код, требуемый автором вопроса. Сделаю несколько замечаний по моему коду:

  1. Если непонятен функционал global, то можете ознакомиться здесь
  2. Для простоты использовал в качестве базы данных отдельный текстовый файл.
  3. В коде есть комментарии.
  4. Если есть вопросы или пожелания, то пишите в комментариях ниже)
import os

base_of_information = {}


def enter():
    global base_of_information # Обращаемся к словарю глобальной области видимости 

    print("Желаете войти?")
    answ_2 = input(": ")
    if answ_2.lower() == "да":
      name = input("Введите имя: ")
      password = input("Введите пароль: ")
      if not os.path.isfile('base_file_for_information.txt'): # Проверяем наличие файла,
                                                            # если файла нет, то создаём.
        f = open('base_file_for_information.txt', 'w')
        f.write('admin, admin1_1\n')
        f.close()

      with open('base_file_for_information.txt', 'r') as file:
        for i in file:
          info = i.strip().split(', ')
          base_of_information[info[0]] = info[1]

      if name in base_of_information.keys():
        if password == base_of_information[name]:
              print('Chirp!')
        else:
          print('Неверный пароль! Попробуйте снова.')
          enter()
      else:
        print("Вас нет в базе данных! Попробуйте снова.")
        enter()

def registration():
    global base_of_information # Обращаемся к словарю глобальной области видимости

    if not os.path.isfile('base_file_for_information.txt'): # Проверяем наличие файла,
                                                            # если файла нет, то создаём.
      f = open('base_file_for_information.txt', 'w')
      f.write('admin, admin1_1\n') # можно убрать
      f.close()
      # Создаём, записываем в файл данные администратора(логин, пароль)
      # если данные администратора не нужно сразу создавать, то просто уберите эту строчку:
      # f.write('admin, admin1_1\n')
      # и закрываем файл.

    flag = True
    print("Введите ваше имя: ", end='')
    name = input()
    print("Введите пароль:")
    password = input()
    while len(password) < 4:
        print("Сорян, ваш пароль слишком маленький, увеличьте его на ", 4 - len(password))
        print("Введите пароль:")
        password = input()
    
    with open('base_file_for_information.txt', 'r') as file: # читаем созданный файл базы данных
      for i in file:
        info = i.strip().split(', ') # обрабатываем строку в файле и приводим из 'admin, admin1_1' к ['admin', 'admin1_1']
        base_of_information[info[0]] = info[1] # добавляем в словарь ключ и значение, где info = ['имя', 'пароль']
      if name in base_of_information.keys(): # если имя есть, то задаём флагу значение False
        flag = False

    if flag:
      base_of_information[name] = password
      with open('base_file_for_information.txt', 'a') as file:
          file.write(name + ', ' + password + '\n')
          print('Регистрация завершена успешно!')
          enter()
    
    else:
      print('Данный пользователь уже зарегистрирован! Желаете попробовать еще раз?')
      res = input()
      if res.lower() == 'да':
          registration()
    

print("Добро пожаловать в справочник!\n ")
print("Желаете зарегистрироваться?")

answ_1 = input(": ")

if answ_1.lower() == "да":
  registration()

elif answ_1.lower() == "нет":
  enter()
→ Ссылка
Автор решения: SergFSM

если по сути вопроса, а не по коду, то проверить список на имеющиеся данные в принципе можно так:

if [name,password] in base_of_information: print('Chirp!')
else:
    answ_1 = input("Вас нету в базе данных! Хотите зарегистрироваться? : ")
        if answ_1 == "да": registration()

или, если вместо списка использовать словарь, то в принципе должно сработать так:

if base_of_information.get(name) == password: print('Chirp!')
→ Ссылка