Индекс списка вне диапазона при попытке чтения в txt-файле на Python

#python #list #text #iteration

Вопрос:

Я хочу прочитать текстовый файл на Python. Текстовый файл состоит из 3 столбцов, все они разделены символом»,». Один столбец представляет идентификатор, один для случайного числа с плавающей запятой и один для присвоенного атрибута (соло, не соло, acc).

Моя цель состоит в том, чтобы преобразовать значения для «соло» и » acc » в «не соло», а затем вычислить переменную y.

Пользователю предлагается ввести идентификатор (номер). Затем я хочу преобразовать строки txt-файла в список и выполнить поиск оставшихся значений, например, пользователь вводит: 45 —gt; Я хочу найти назначенное значение, затем преобразовать его в «не соло» и вычислить y. В конце концов, я хочу напечатать присвоенное значение в единице измерения «не соло», а также вычисление y.

Однако, когда я пытаюсь найти значения, я получаю сообщение об ошибке, в котором говорится, что мой индекс списка будет вне диапазона. У кого-нибудь есть идеи, как это исправить?

Я просматриваю страницы в течение нескольких часов, но не могу найти решение, которое работает.

Большое вам спасибо!

 import math  fobj = open('test.txt', 'r') file_content = fobj.readline() fobj.close()  for file in file_content:  file = file.strip() file_list = file.split(',')  ID_q = int(input("Please enter number [else enter 'finished']:")) ID = ID_q   1  if ID_q != "finished":  output = "Your ID {} is assigned to following values: ".format(ID_q)  print(output)   #Now the fun part starts!  chosen_line = [ID]   for position, line in enumerate(file_content):  if position in chosen_line:  file_line = chosen_line.split(',')   ID_inline = file_list[0]  print(ID_inline)   if file_list[2] == 'solo':  x = float((float(file_list[1])) * (math.pi/180))  x_result = float("not solo: {0}".format(x))  x_result = round(x_result, 2)   y = float(math.sin((6*(float(file_list[1])))-(3*math.cos((float(file_list[1]))))))  function = float("f(x) = {0}".format(y))  function = round(function, 2)   print(x_result)  print(function)   elif file_list[2] == 'acc':  x = float((float(file_list[1])) * (math.pi/200))  x_result = float("not solo: {0}".format(x))  x_result = round(x_result, 2)   y = float(math.sin((6*(float(file_list[1])))-(3*math.cos(float(file_list[1])))))  function = float("f(x) = {0}".format(y))  function = round(function, 2)   print(x_result)  print(function)   else:  x = ID  y = float(math.sin((6*(float(file_list[1])))-(3*math.cos(float(file_list[1])))))  function = float("f(x) = ".format(y))  function = round(function, 2)   print(x)  print(function)  else:  print("Bye.")  

Комментарии:

1. Не могли бы вы расположить свой отступ?

2. Проверьте свои циклы : может быть слишком много, и переменные трудно отслеживать : file_list, file_content, choosen_line

Ответ №1:

Когда вы это сделаете:

 fobj = open('test.txt', 'r') file_content = fobj.readline() fobj.close()  

Вы читаете только одну строку, а не весь файл целиком.

Комментарии:

1. Спасибо! Могу я спросить: как я мог прочитать все строки в виде списков?

2. Попробуйте: ‘fobj.read()’