В одном из ответов здесь я прочитал, что лучше на этапе обучения писать код в блокноте и без подсказок, только оф.документация.
import sqlite3
class Notes:
def __init__(self, login):
self.notes = []
self.login = login
self.menu()
def menu(self):
while True:
print('1. Добавить заметку')
print('2. Удалить заметку')
print('3. Просмотреть все заметки')
print('4. Выйти из профиля')
entry = input('Введите число: ')
if entry == '1':
self.add_note()
elif entry == '2':
pass
elif entry == '3':
self.view_notes()
elif entry == '4':
print('Пока!')
break
else:
print('Нужно ввести число из предложенных вариантов!')
def add_note(self):
while True:
print('Напиши заметку')
print('Если хочешь вернуться назад, напиши \'Назад\'')
note = input('Твой текст: ')
if note.strip().lower() == 'назад':
break
else:
note = note.strip()
self.notes.append({
'login': self.login,
'note': note
})
print(note)
Memory().save_notes_db(self.login, note)
print('Заметка добавлена!')
def view_notes(self):
notes = Memory().load_notes_db()
view = []
for note in notes:
if note[0] == self.login:
view.append(note[1])
for num, note in enumerate(view, 1):
print(f'{num}. {note}')
class Authorization:
def __init__(self):
self.users = []
self.authorization = False
def auth(self):
while True:
print('1. Ввести логин и пароль')
print('2. Зарегистрироваться')
print('3. Выход')
answer = input('Ваш выбор: ')
if answer.strip().lower() == '1':
self.login()
elif answer.strip().lower() == '2':
self.registration()
elif answer.strip().lower() == '3':
print('Пока!')
break
def login(self):
users = Memory().load_users()
while True:
login = input('Введите логин: ')
password = input('Введите пароль: ')
for user in users:
if user[0] == login.strip() and user[1] == password.strip():
return Notes(login)
else:
print('Неверный логин или пароль!')
def registration(self):
users = [user[0] for user in Memory().load_users()]
while True:
print('Регистрация.')
login = input('Введите логин: ')
if login.strip() in users:
print('Пользователь уже существует! Введите другой логин или войдите в систему')
else:
while True:
password = input('Введите пароль: ')
if len(password) > 3:
user_save = Memory()
user_save.save_users_db(login, password)
return Notes(login)
else:
print('Пароль не может быть пустым или быть меньше 4 символов!')
class Memory:
def __init__(self):
self.notes_con = sqlite3.connect('notes.db')
self.users_con = sqlite3.connect('users.db')
def load_notes_db(self):
cur_notes = self.notes_con.cursor()
data = cur_notes.execute('SELECT * FROM notes')
notes = data.fetchall()
return notes
def load_users(self):
cur_users = self.users_con.cursor()
cur_users.execute('CREATE TABLE IF NOT EXISTS users(login, password)')
data = cur_users.execute('SELECT * FROM users')
users = data.fetchall()
return users
def save_users_db(self, login, pwd):
cur_users = self.users_con.cursor()
cur_users.execute('''INSERT INTO users(login, password) VALUES (?, ?)''', (login, pwd))
self.users_con.commit()
self.users_con.close()
def save_notes_db(self, login, note):
cur_notes = self.notes_con.cursor()
cur_notes.execute('CREATE TABLE IF NOT EXISTS notes(login, notes)')
cur_notes.execute('''INSERT INTO notes(login, notes) VALUES (?, ?)''', (login, note))
self.notes_con.commit()
self.notes_con.close()
notes = Authorization()
notes.auth()
Я самостоятельно написал код без подсказок, там еще много что нужно править. Мне хотелось понять, стоит ли дальше делать это в блокноте или это только будет меня замедлять? Я не понимаю свой уровень знаний.