Как запустить подсчет из текстового файла для разных функций - PullRequest
0 голосов
/ 03 марта 2020

У меня есть задача, где мне нужно запустить определенные функции на основе текстового файла для подсчета определенного текста. Первый набор инструкций я смог сделать сам, поскольку он не основан на пользователях, а представляет собой просто общее количество текстовых элементов в текстовом файле (tasks.txt). Моя проблема, с которой я сталкиваюсь сейчас, заключается в том, как рассчитать определенные вещи из текстового файла, основываясь только на пользователях. В настоящее время существует только одна задача, но если бы мне было назначено более одной задачи и другому пользователю, как бы я выполнял вычисления только для этого конкретного c пользователя? Любой совет будет оценен по достоинству.

Текстовый файл: (tasks.txt)

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

Бобби

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

Полет

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

Полет на Луну

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

Дата назначения: 2020-03-03

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

Нет

Номер задания:

1

1-й набор задач: (выполнено)

Общее количество созданных задач

Общее количество выполненных задач.

Общее количество незавершенных задач .

Общее количество задач, которые не были выполнены и которые просрочены.

Процент незавершенных задач.

Процент просроченных задач ,

2-й набор задач (для пользователей):

Общее количество задач, назначенных этому пользователю.

Какой процент от общего числа Задачи были назначены этому пользователю?

Какой процент задач, назначенных этому пользователю, был выполнен?

Какой процент задач, назначенных этому пользователю, все еще должен быть выполнен?

Какой процент задач, назначенных этому пользователю, еще не выполнен и просрочен?

Мой код пока:

data2 = open('tasks.txt').read()
    count3 = data2.count('Task Title')
    count4 = data2.count('Yes')
    count5 = data2.count('No')

    with open("tasks.txt", "r")as f5:
        today = datetime.datetime.today()
        overdue = 0
        for line in f5:
            if not line.startswith('Task Due Date'): continue
            field, value = line.split(':')
            if field == 'Task Due Date':
                if datetime.datetime.strptime(value.strip(), '%Y-%m-%d') < today:
                    overdue = overdue + 1
            ab = (overdue/count3)*100
            abb = (count5/count3)*100
            print("Total number of tasks: " + str(count3) + "\nTotal number of completed tasks: " + str(count4) + "\nTotal number of incomplete tasks: " + str(count5) + "\n" +
            "The percentage of overdue tasks is: " + str(ab) + "%" + "\n" + "The percentage of incomplete jobs is: " + str(abb) + "%")
            num_lines = sum(1 for line in open('user.txt'))
            print("The number of registered users is: " + str(num_lines) + "\n")
            data3 = open('tasks.txt','r').read()


            usr_check = input("Please input a user name to write details of that user.\n")
            count6 = data3.count(usr_check)
            count7 = (count6/count3)*100
            print("The user " + str(usr_check) + " has total tasks of: " + str(count6) + "\n" + str(usr_check)+ "'s" + " " + "percentage of total tasks is: "
            + str(count7) + "%")

1 Ответ

0 голосов
/ 03 марта 2020

Сначала вы можете прочитать файл, создать объекты (класс Task) и для каждой задачи создать новый класс, добавить его в массив с этими объектами.

Объект должен содержать

  • пользователь
  • название
  • даты

И вся важная информация, поэтому в дальнейшем вы сможете с ними легко работать.

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

Что лучше в словаре, вы можете использовать обычный список, содержащий объекты, соответствующие пользователю, так что вы можете посчитать, что список, вы можете группировать объекты, выполнив или не, и т. д.

Специфика c структуры данных легче работать с. Я рекомендую использовать классы для задач.

...