#python-3.x
#python-3.x
Вопрос:
Проблема, с которой я сталкиваюсь, заключается в том, что я могу считывать информацию из файлов, но когда я пытаюсь преобразовать их из строки в целое число, я получаю ошибку. У меня также есть проблемы, когда min / max печатается как все содержимое файла.
Я пробовал использовать операторы if / then, а также использовать разные переменные для каждой строки в файле.
file=input("Which file do you want to get the data from?")
f=open('data3.txt','r')
sent='-999'
line=f.readline().rstrip('n')
while len(line)>0:
lines=f.read().strip('n')
value=int(lines)
if value>value:
max=value
print(max)
else:
min=value
print(min)
total=sum(lines)
print(total)
Я ожидаю, что код найдет минимальное / максимальное количество чисел в файле, а также сумму и среднее значение чисел в файле. Результаты из файла, обрабатываемого в коде, затем должны быть записаны в другой файл. Мои результаты заключались в различных ошибках, указывающих, что Python не может преобразовать из str в int, а также печатать все содержимое файла вместо ожидаемых результатов.
Комментарии:
1. Пожалуйста, включите некоторые примеры данных, а также полное сообщение об ошибке (трассировка).
2.
print(repr(value))
прежде чем преобразовать его, чтобы посмотреть, похоже ли оно на целое число, или используйте исходный отладчик и выполните пошаговый код.
Ответ №1:
работает ли следующее?
lines = list(open('fileToRead.txt'))
intLines = [int(i) for i in lines]
maxValue = max(intLines)
minvalue = min(intLines)
sumValue = sum(intLines)
print("MaxValue : {0}".format( maxValue))
print("MinValue : {0}".format(minvalue))
print("Sum : {0}".format(sumValue))
print("Avergae : {0}".format(sumValue/len(intLines)))
и вот как сформулирован мой filesToRead.txt
(на самом деле, самый простой)
10
20
30
40
5
1
Я считываю содержимое файла в список. Затем я создаю новый список (его можно объединить с предыдущим шагом как часть некоторого рефакторинга кода), который содержит весь список целых чисел.Однажды, когда у меня есть список целых чисел, его легче вычислить max
и min
на нем.
Обратите внимание, что некоторые переменные названы неправильно. Также чтение всего файла за один раз (как то, что я сделал здесь) может быть плохой идеей, если файл слишком большой. В этом случае вы никогда не должны читать весь файл за один раз. В этом случае вам нужно прочитать его построчно, проанализировать целые числа и добавить их в список целых чисел. Как только вы закончите чтение файла, закройте файл. Затем вы можете начать свои вычисления на основе списка целых чисел, который вы сейчас получили.
Пожалуйста, дайте мне знать, если это решит ваш запрос.
Спасибо