TypeError: 'int' object is not subscriptable - Trying To Create A Graph
TypeError: 'int' object is not subscriptable - Trying To Create A Graph
我正在尝试创建一个简单的程序,然后我输入的与每日 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))
我正在尝试创建一个简单的程序,然后我输入的与每日 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))