0

我有一项任务,我需要根据文本文件运行某些函数来计算某些文本。我能够自己做的第一组指令不是基于用户的,它只是文本文件(tasks.txt)中文本项的一般计数。我现在遇到的问题是如何仅基于用户从文本文件中计算某些内容。当前只有一项任务,但如果我分配了多个任务并且分配给不同的用户,我将如何仅为该特定用户进行计算?任何建议将不胜感激。

文本文件是:(tasks.txt)

分配给任务的用户:

鲍比

任务名称:

任务描述:

飞向月球

任务截止日期:2020-04-01

分配日期:2020-03-03

任务完成:

任务编号:

1

第一组任务:(已完成)

已生成的任务总数

已完成任务的总数。

未完成任务的总数。

尚未完成和逾期的任务总数。

未完成任务的百分比。

逾期任务的百分比。 

第二组任务(基于用户):

分配给该用户的任务总数。

分配给该用户的任务总数的百分比是多少?

已完成分配给该用户的任务的百分比是多少?

必须完成分配给该用户的任务的百分比是多少?

分配给该用户的任务中有多少百分比尚未完成且已过期? 

到目前为止我的代码:

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) + "%")
4

1 回答 1

0

您可以先读取文件,创建对象(类任务),然后为每个任务创建一个新类,将其附加到包含这些对象的数组中。

一个对象应该包含

  • 用户
  • 标题
  • 日期

以及每个重要信息,以便您以后可以轻松地使用它们。

然后您可以遍历该列表并计算任务数(是的,len() 是更好的方法),您可以创建字典,并动态添加键(分配给任务的用户)并计算任务数对应于特定的用户,以及您需要完成的所有过程。

更好的是在字典中,您可以使用普通列表来包含与用户对应的对象,因此您可以计算该列表,您可以通过完成或不对对象进行分组,等等。

特定的数据结构更容易使用。我建议使用类来完成任务。

于 2020-03-03T16:23:36.153 回答