Я пишу программу, которая, когда пользователь вводит txt-файл, считывает данные и распечатывает файл и указывает, верна ли арифметическая прогрессия.
пример желаемого результата
file: something.txt
[1,2,3,4] True
[3,4,7,7] False
[2,4,6,8,10] True
so on ..
Я пытался это сделать, но не уверен, как прочитать файл и добиться желаемого результата. Мой текущий код принимает заданные значения и печатает вывод ниже.
Source File Name: p3_v1.txt
True
False
Смотрите ниже мой код.
name = input('Source File Name: ')
def is_arithmetic(l):
delta = l[1] - l[0]
for index in range(len(l) - 1):
if not (l[index + 1] - l[index] == delta):
return False
return True
print(is_arithmetic([5, 7, 9, 11]))
print(is_arithmetic([5, 8, 9, 11]))
Как я могу изменить свой код, чтобы распечатать содержимое текстового файла и распечатать, если каждая строка истинна или ложна? Любая помощь будет оценена по достоинству.
Привет @ edward, содержимое входного файла выглядит следующим образом:
2 4 6 8 10 12 14
1 3 6 7 7 7 5 7
и так далее.. в файле 5 строк по 4 - 5 цифр в строке, извините форматирование в коментариях набило






Чтобы прочитать файл, вы можете использовать встроенную функцию Python открытым() function. документация здесь. И этот Справка тоже поможет
Пример кода:
name = input('Source File Name: ')
with open(name) as f:
lines = f.read()
print(lines)
readlines = f.readlines()
print(readlines)
Пример вывода
'1\n2\n3\n4\n5\n\n'
['1\n', '2\n', '3\n', '4\n', '5\n', '\n']
Функция читать() вернет содержимое в виде строки. и строки чтения() вернет строки в виде списка. Вы можете использовать манипуляции со строками, чтобы разделить выходные данные и использовать int({variable}), чтобы преобразовать их в целое число.
Что-то вроде этого сработает...
name = input('Source File Name: ')
def is_arithmetic(l):
delta = l[1] - l[0]
for index in range(len(l) - 1):
if not (l[index + 1] - l[index] == delta):
return l, False
return l, True
# open the containing data
with open(name, 'rt') as txtfile:
# read in data and split into lines
lines = txtfile.read().split('\n')
# iterate through the lines one at a time
for line in lines:
# convert to integers
l = [int(i) for i in line.split(' ') if i.isdigit()]
# print the output of the is_arithmetic function for the line
print(is_arithmetic(l))
Привет, @alexpdev, к сожалению, этот код не работает, я получаю сообщение об ошибке TypeError: неподдерживаемые типы операндов для -: 'str' и 'str'
@Yakob У меня это отлично работает. Попробуйте скопировать еще раз, возможно, вы схватили код до того, как я смог его отредактировать.
@alexpdev код работает, но он неправильно сортирует файл. вывод показывает имя исходного файла: P3_v1.txt ([2, 4, 6, 8, 3, 6, 46, 24, 35, 48, 88, 78, 68, 58], False) мне нужен файл для печати всех строки файла и все числа в файле и выведите каждую строку либо с истинным, либо с ложным значением.
какова структура вашего входного файла?