Learning Python, writing in the form of an educational project To-Do list. Faced a problem: Python opens to work with empty lists, it gives an error:
AttributeError: 'NoneType' object has no attribute 'append'
It is clear that an empty object produces this, but if I need it initially empty, then how to work with it later? Or tell me where I'm not doing it right.
Program Code:
import shelve def addNewTask(taskArticle, taskDescribe, taskDeadline, taskPriority): tasklistArticles.append(taskArticle) tasklistDescribes.append(taskDescribe) tasklistDeadlines.append(taskDeadline) tasklistPriorities.append(taskPriority) db = shelve.open("save", flag='n', protocol=None, writeback=False) db["articles"] = tasklistArticles db["describes"] = tasklistDescribes db["deadlines"] = tasklistDeadlines db["priorities"] = tasklistPriorities db.close() return tasklistArticles = [] tasklistDescribes = [] tasklistDeadlines = [] tasklistPriorities = [] listLength = 0 db = shelve.open("save", flag='n', protocol=None, writeback=False) tasklistArticles = db.get("articles") tasklistDescribes = db.get("describes") tasklistDeadlines = db.get("deadlines") tasklistPriorities = db.get("priorities") db.close() while True: if(tasklistArticles==None): command = input("Список задач пуст. Введите [+] для создания задачи\n") else: listLength = len(tasklistArticles) for i in range(listLength): print("\n", tasklistArticles[i]) command = input("Введите номер задачи или [+] для создания новой\n") if (command=="+"): taskArticle = input("Заголовок задачи:\n") taskDescribe = input("Описаниее задачи:\n") taskDeadline = input("Дедлайн:\n") taskPriority = input("Приоритет (от 0 до 10):\n") addNewTask(taskArticle, taskDescribe, taskDeadline, taskPriority) elif(int(command)<=listLength): print("\n-----\n", tasklistArticles[int(command)], "\n", tasklistDescribes[int(command)], "\n", tasklistDeadlines[int(command)],"\n", tasklistPriorities[int(command)], "\n-----\n") elif(int(command)>listLength): print("Неверный номер задачи") else: print("Ошибка: неизвестная команда")