Почему я получаю сообщение об ошибке "строковые индексы должны быть целыми числами" в этой строке кода?

Хорошо, я знаю, что это выглядит не очень аккуратно, но в строке "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  
Другие вопросы по тегам