#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()’