代码无法正常工作 - 尝试创建一个简单的图形

Code Not Working Properly - Trying To Create A Simple Graph

我正在尝试创建一个简单的程序,然后我输入的与每日 COVID-19 病例相关的数据将被制成表格并创建成一个小图表。例如,我将首先输入(主要输入)将是:7 20200401 20200403,它代表我的主要输入之后的输入数量,以及案例的起始日期。然后我将继续输入医院、该医院的病例数和报告日期。每天的案例数将由 * 表示。当我转到 运行 我的程序时,它只显示了所有 7 天内输入的最后 # 个案例。有什么办法可以解决这个问题,让程序每天正确显示正确的病例数吗?

为了帮助您理解,下面是该程序的示例输入和输出:

输入:

7 20200401 20200403
HP1 20200401 1
HP2 20200401 1
HP3 20200401 1
HP4 20200402 1
HP5 20200402 1
HP6 20200403 1
HP7 20200403 1

输出:

20200401:***
20200402:**
20200403:**

但是,我得到的是:

20200401:*
20200402:*
20200403:*

这是我的代码:

CoronaCaseNumber = input("")
CoronaList = CoronaCaseNumber.split(" ")
LuckyNumber = CoronaList[0]
Date = CoronaList[1]
Date2 = CoronaList[2]
LuckyNumero = int(LuckyNumber)
DateList = []
CaseNumberList = []
for case in range(LuckyNumero):
    CoronaCaseData = input()
    CoronaList2 = CoronaCaseData.split(" ")
    InfoDate = CoronaList2[1]
    DateList.append(InfoDate)
    CaseNumber = CoronaList2[2]
    CaseNumberList.append(CaseNumber)

EmptySet = []
for i in DateList:
    if i >= Date and i <= Date2:
        if i not in EmptySet:
            EmptySet.append(i)

for i in range(0, len(CaseNumberList)):
    CaseNumberList[i] = int(CaseNumberList[i])

EmptySet.sort()
for i in range(len(EmptySet)):
    print("{}{}{}".format(EmptySet[i], ":", "*" * CaseNumberList[i]))

每次我 运行 你的脚本时我都懒得输入所有的数据,所以我自动化了那部分以使其开发和测试更容易。同样,我认为最简单的做法是使用 collections 模块的 defaultdict class 来跟踪已看到的日期 他们每个人看到的案件总数。这就是我的意思:

from collections import defaultdict

#CoronaCaseNumber = input("")
#CoronaList = CoronaCaseNumber.split(" ")
#LuckyNumber = CoronaList[0]
#Date = CoronaList[1]
#Date2 = CoronaList[2]
LuckyNumber, Date, Date2 = "8 20200401 20200404".split(" ")

data = """\
HP4 20200402 1
HP5 20200402 1
HP1 20200401 1
HP2 20200401 1
HP3 20200401 1
HP6 20200403 0
HP6 20200404 1
HP7 20200404 1
""".splitlines()

LuckyNumero = int(LuckyNumber)
DateList = []
CaseNumberList = []
for case in range(LuckyNumero):
    CoronaCaseData = data[case]
    CoronaList2 = CoronaCaseData.split(" ")
    InfoDate = CoronaList2[1]
    DateList.append(InfoDate)
    CaseNumber = CoronaList2[2]
    CaseNumberList.append(CaseNumber)

DailyCases = defaultdict(int)

for i, d in enumerate(DateList):
    if Date <= d <= Date2:  # Valid date?
        DailyCases[d] += int(CaseNumberList[i])

# Print daily cases sorted by date (i.e. the dictionary's keys).
for date in sorted(DailyCases, key=lambda d: int(d)):
    print("{}:{}".format(date, '*' * DailyCases[date]))

输出:

20200401:***
20200402:**
20200403:
20200404:**