Программа для проверки арифметической прогрессии из файла .txt и печати true/false

Я пишу программу, которая, когда пользователь вводит 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 10.05.2022 06:25

Привет @ edward, содержимое входного файла выглядит следующим образом:

Yakob 10.05.2022 06:25

2 4 6 8 10 12 14

Yakob 10.05.2022 06:27

1 3 6 7 7 7 5 7

Yakob 10.05.2022 06:27

и так далее.. в файле 5 строк по 4 - 5 цифр в строке, извините форматирование в коментариях набило

Yakob 10.05.2022 06:28
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы прочитать файл, вы можете использовать встроенную функцию 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 10.05.2022 06:35

@Yakob У меня это отлично работает. Попробуйте скопировать еще раз, возможно, вы схватили код до того, как я смог его отредактировать.

alexpdev 10.05.2022 06:37

@alexpdev код работает, но он неправильно сортирует файл. вывод показывает имя исходного файла: P3_v1.txt ([2, 4, 6, 8, 3, 6, 46, 24, 35, 48, 88, 78, 68, 58], False) мне нужен файл для печати всех строки файла и все числа в файле и выведите каждую строку либо с истинным, либо с ложным значением.

Yakob 10.05.2022 06:39

Другие вопросы по теме