Переменная count
находится в глобальной области видимости, и когда вы запускаете count = count + 1
в своей функции, вы изменяете ее только для области локальной функции. если вы хотите, чтобы функция изменила глобальную переменную, вам нужно использовать оператор global
.
Добавьте это в качестве первой строки функции add_task
:
global count
И удалите считать из параметра функции. (поэтому функция add_task
будет вызываться без передачи ей счетчика)
Теперь, когда вы запустите count = count + 1
, она изменит переменную счетчика из глобальной области.
Однако использование глобальных переменных не рекомендуется , лучше использовать класс и сохранить счетчик в качестве переменной класса:
class TaskCreator():
task_count = 0
@classmethod
def add_task(cls):
if menu == "a" or menu == "A":
with open( 'user.txt' ) as fin :
usernames = [i.split(',')[0] for i in fin.readlines() if len(i) > 3]
task = input ("Please enter the username of the person the task is assigned to.\n")
while task not in usernames :
task = input("Username not registered. Please enter a valid username.\n")
else:
task_title = input("Please enter the title of the task.\n")
task_description = input("Please enter the task description.\n")
task_due = input("Please input the due date of the task. (yyyy-mm-dd)\n")
date = datetime.date.today()
task_completed = False
if task_completed == False:
task_completed = "No"
else:
task_completed = ("Yes")
with open('tasks.txt', 'a') as task1:
cls.task_count += 1
task1.write("\nUser assigned to task" + str(cls.task_count) + "\n" + task + "\nTask Title :" + "\n" + task_title + "\n" + "Task Description:\n" + task_description + "\n" + "Task Due Date:\n" + task_due + "\n" + "Date Assigned:\n" + str(date) + "\n" + "Task Completed:\n" + task_completed + "\n")
print("The new assigned task has been saved")
TaskCreator.add_task()