Где я могу поместить float() или любую строку в числовую функцию в этом цикле потока?

Я пытаюсь открыть какой-нибудь текстовый файл, в котором есть цифры, и указать в нем средние, минимальные и максимальные значения. Моя первая проблема заключается в том, что я не знаю, куда поместить функцию преобразования в цикл. Код следующий:

for i in range(len(numsInFile)):
    numofNums += 1
    numsInFile = numFile.read()

Куда мне положить, скажем, int() или же float() функция в этом цикле?

Редактировать: ОК. По просьбе одного из авторов по этой теме я решил опубликовать весь свой файл.py здесь:

  from os import strerror
try:
    numFile = open("nums.txt", 'rt')
    numofNums = 0
    numSum = 0
    avgOfSum = 0
    minOfNums = 0
    maxOfNums = 0
    for i in range(len(numsInFile)):
        numofNums = len(numFile.readline())
        numsInFile[i] = float(numFile.readline().strip())
    numFile.close()
    resultsFile = open("results.txt", 'wt')
    resultsFile.write(numsInFile)
except IOError as IOE:
    print("Oh no! A IOError has occurred: ", sterr(e.errno))

2 ответа

Этот ответ предполагает, что файл состоит из одного числа в строке.

Во-первых, вы должны использовать readline()не read(), read() будет пытаться прочитать весь файл одновременно, а не только одну строку за раз.

Затем вы помещаете конверсию вокруг результата этого. Вам также нужно скинуть новую строку.

Вы также перезаписываете список в numsInFile с одним номером. Вы должны назначить определенный индекс.

Итак, измените строку:

numsInFile = numFile.read()

чтобы:

numsInFile[i] = float(numFile.readline().strip())

Первое, что вам нужно сделать, это решить, как файл будет отформатирован. Вы можете полностью отказаться от цикла, если решите, например, что числа всегда будут разделяться запятой. Тогда вы можете просто сделать:

with open("myFile.txt") as f:
    numOfNums = len(f.read().split(","))
Другие вопросы по тегам