问题描述
我正在尝试创建一个简单的程序,然后将我与日常COVID-19病例相关的数据输入制成表格并创建为一个小图形。例如,我的第一个输入(主输入)将是:7 20200401 20200403,它表示我的主输入后输入的数量,以及案例的起始日期。然后,我将输入医院的信息,该医院的病例数以及报告的日期。每天的案例数将以*表示。当我去运行程序时,遇到一个:
回溯(最近通话最近一次):
中的文件“ C:/ Users /-/-/-/-.. py”,第25行print(“ {} {} {}”。format(EmptySet [i],“:”,“ *” * CaseNumberList [i]))
TypeError:无法将序列乘以类型为'str'的非整数
有什么办法可以解决它,并使程序每天正确显示正确数量的案件吗?
这是我的代码:
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)
IntCaseNumberList = int("".join(str(i) for i in CaseNumberList))
EmptySet.sort()
for i in range(len(EmptySet)):
print("{}{}{}".format(EmptySet[i],":","*" * IntCaseNumberList[i]))
在此可以提供任何帮助。
解决方法
这将创建一个单个整数,该整数是CaseNumberList
中所有数字的串联,而不是整数列表:
IntCaseNumberList = int("".join(str(i) for i in CaseNumberList))
因此,当您尝试使用IntCaseNumberList[i]
时,它不起作用,因为它是一个数字,而不是一个列表。
要创建整数列表,您需要在列表理解内调用int()
:
IntCaseNumberList = [int(i) for i in CaseNumberList]
首先,您也可以直接将整数直接放入CaseNumberList
中,这样就无需创建新列表。更改
CaseNumberList.append(CaseNumber)
到
CaseNumberList.append(int(CaseNumber))