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

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

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 ]

0 голосов
/ 05 декабря 2018

В этом ответе предполагается, что файл содержит одно число в строке.

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

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

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

Поэтому измените строку:

numsInFile = numFile.read()

на:

numsInFile[i] = float(numFile.readline().strip())
0 голосов
/ 05 декабря 2018

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

with open("myFile.txt") as f:
    numOfNums = len(f.read().split(","))
...