如何解决代码无法正常工作-试图创建一个简单的图形
我正在尝试创建一个简单的程序,然后将我与日常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
类来跟踪日期和日期的总数他们每个人。这就是我的意思:
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:**
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。