Простой способ переписать код, чтобы сохранить правильный вывод в текст - PullRequest
0 голосов
/ 07 февраля 2020

Я надеюсь, что кто-то может, наконец, помочь. Я пытаюсь написать код для сохранения задач в текстовом файле. Текстовый файл принимает данные от пользователя и сохраняет информацию. Я хотел бы найти очень простой способ изменить свой следующий код, чтобы добавить номер к задаче, чтобы позже я смог вызвать конкретную задачу c. После того, как первая задача помечена как Пользователь, назначенный для задачи 1: следующая задача должна быть помечена как Пользователь, назначенный для задачи 2: и затем пользователь задачи, назначенный для задачи 3:

пример задачи:

Пользователь назначен на задачу:

домкрат

Название задачи:

jog

Описание задачи:

Go бег

Дата выполнения задачи:

2020-02-08

Назначенная дата:

2020-02-07

Выполнение задачи:

Нет

запрошенный вывод:

Пользователь назначен на задачу 1:

jack

Название задачи:

jog

Описание задачи:

Go jogging

Срок выполнения задачи:

2020-02-08

Назначенная дата:

2020-02-07

Задание выполнено:

Нет

Код, который у меня есть, следующий. Он записывает числа в текстовый файл, но все они помечены как задача 1, и следующая задача не меняется на задачу 2:

def add_task(count):
 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:
            count=count+1
            task1.write("\nUser assigned to task: "+ str(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")
count = 0
add_task(count)

1 Ответ

1 голос
/ 07 февраля 2020

Это потому, что переменная count изменяется только в пределах add_task(). Изменения не видны за пределами этой функции, поэтому count всегда 0, когда вы вызываете add_task(count).

Чтобы узнать больше о области действия в Python, перейдите по этой ссылке: https://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html#more -about-scope-перекрестки-границы

РЕДАКТИРОВАТЬ: Вы можете получить доступ либо переменная глобального подсчета (см. этот ответ ) или - и это то, что я бы порекомендовал - вы можете вернуть локальную переменную count и использовать ее для обновления другой переменной, например: count = add_task(count)

...