Почему я получаю сообщение об ошибке "строковые индексы должны быть целыми числами" в этой строке кода?
Хорошо, я знаю, что это выглядит не очень аккуратно, но в строке "FinalMessage" я получаю сообщение об ошибке "строковые индексы должны быть целыми числами", и мне нужна небольшая помощь, чтобы исправить это и понять, почему. Любая помощь приветствуется:)
StartBalance = input("Enter a Start Balance - £")
InterestRate = input("Enter Interest Rate - %")
StartBalance = float(StartBalance)
InterestRate = float(InterestRate)
InterestRate = InterestRate/100
TotalBalance = StartBalance
MonthList = []
InterestList = []
Months = 24
print("Month Interest Total Balance")
for Months in range(0,25):
Interest = TotalBalance*InterestRate/12
TotalBalance = TotalBalance + Interest
if Months < 10:
message = " %d %6.2f %6.2f" %(Months, Interest,
TotalBalance)
else:
message = " %d %6.2f %6.2f" %(Months, Interest,
TotalBalance)
print(message)
MonthList.append(Months)
InterestList.append(Interest)
EndOfInput = False
while EndOfInput == False:
NumOfMonth = input("Enter Month to see Interest and Balance - ")
FinalMessage = float(NumOfMonth[MonthList]), float(Interest[MonthList]),
float(TotalBalance[MonthList])
print(FinalMessage)
Response = ""
while Response != "Yes" and Response != "No":
Response = input("Would you like to see another Month? - ")
if Response == "Yes":
if Response != "Yes" and Response != "No":
print("Invalid input, please enter Yes or No")
if Response == "No":
EndOfInput = True
print("Thank you for using this program, Goodbye :)")
3 ответа
Вы определяете MonthList
как (хех) список здесь MonthList = []
, Затем вы пытаетесь использовать его в качестве индекса здесь NumOfMonth[MonthList]
, что предсказуемо не удается.
Я предполагаю, что вы хотели X-й месяц, который будет переводиться в:
MonthList[NumOfMonth]
Но тогда у вас также есть неправильная индексация здесь Interest[MonthList]
что я снова, предположим, должен был быть InterestList[NumOfMonth]
РЕДАКТИРОВАТЬ
Как указано в комментариях, вам нужно сначала преобразовать NumOfMonth в int NumOfMonth=int(NumOfMonth)
Перерабатывать NumOfMonth
целое число int(NumOfMonth)
Строка должна быть:
FinalMessage = float(MonthList[NumOfMonth]), float(InterestList[NumOfMonth]), float(TotalBalance)
Ваша главная проблема заключалась в том, что вы перепутали индексы списка. Ты хочешь NumOfMonth
внутри []
не снаружи. Это случилось для InterestList
а также TotalBalance
также.
В соответствии
FinalMessage = float(NumOfMonth[MonthList]), float(Interest[MonthList]), float(TotalBalance[MonthList])
ты используешь MonthList
в качестве индекса, который является списком. Также обратите внимание, что totalBalance
а также Interest
являются float
объекты, а не объект списка или итеративный. Это делает Interest[NumOfMonth]
а также TotalBalance[MonthList]
недействительным.
Так должно быть
FinalMessage = float(MonthList[int(NumOfMonth])), InterestList[int(NumOfMonth]), TotalBalance