代码无法正常工作 - 尝试创建一个简单的图形
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:**
我正在尝试创建一个简单的程序,然后我输入的与每日 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:**