Найти - Пользователи
Полная версия: Обработка файлов
Начало » Центр помощи » Обработка файлов
1
vexamd

всем привет
Можете помочь с обработки файлов
Программа должна быть загружена с файлом expression.txt. Структура файла такова, что каждая строка представляет выражение в следующем формате:
4-1
12-3
формат такой: <Число> <число>
Должна быть написана программа, которая будет считывать файл построчно, применять данную операцию и записывать результат вместе с соответствующим выражением в файл output.txt.
Внешний вид файла output.txt:
4-1 = 3
12-3 = 9
doza_and
vexamd
Можете помочь с обработки файлов
Конечно можем. Действуете так.
1 Надо прочитать книжку Лутца о языке питон.
2. Придумываете алгоритм как решить вашу задачу
3. Если потребуется изучаете разделы документации
https://docs.python.org/3/tutorial/inputoutput.html
4. Пишете программу.
5. Если она всеже не заработает, выкладываете ее сюда с четкими формулировками что именно не получается.
vexamd
doza_and
Я сделал так
def sub(a, b):
return a-b
with open ('./expression.txt', ‘r’) as f:
lines = f.readlines()
for l in lines:
if l == ‘-’:
lines = sub
with open ('./output.txt', ‘w’) as g:
g.write(lines(int(l), int(l)))
g.close()
и не получается пишет ошибка TypeError: write() argument must be str, not int
py.user.next
vexamd
Программа должна быть загружена с файлом expression.txt. Структура файла такова, что каждая строка представляет выражение в следующем формате:
4-1
12-3
формат такой: <число><минус><число>
Должна быть написана программа, которая будет считывать файл построчно, применять данную операцию и записывать результат вместе с соответствующим выражением в файл output.txt.
Внешний вид файла output.txt:
4-1 = 3
12-3 = 9

vexamd
Я сделал так
  
def sub(a, b):
    return a-b
with open ('./expression.txt', 'r') as f:
    lines = f.readlines()
    for l in lines:
        if l[1] == '-':
            lines = sub
            with open ('./output.txt', 'w') as g:
                g.write(lines(int(l[0]), int(l[2])))
                g.close()

Надо сразу открыть файл ввода и файл вывода. В одном with это можно сделать. А потом, читая одну строку ввода из файла ввода, преобразовывать её в строку вывода и записывать строку вывода в файл вывода.

Для преобразования строки ввода в строку вывода надо применить блок операторов. Этот блок операторов для преобразования строки включает в себя: разделение строки на части; получение из строковых типов частей числовых типов частей; выбор математической операции; применение выбранной математической операции к числовым частям; соединение числовых частей, математической операции и результата математической операции в новую строку.

Сам будешь делать или подождёшь инженера?
doza_and
vexamd
write() argument must be str, not
Конкретно по этой ошибке если не знаете английского то используйте google translate.

Либо надо результат преобразовать в строку.

Плохая идея везде использовать одну и туже переменную lines
Что вы имели ввиду когда писали:
 lines = sub
 if l[1] == '-'
Что по вашему мнению возвращает l???

Сейчас у вас в каждой строчке по несколько ошибок.

Я бы рекомендовал запустить интерпретатор питон (в IDE тоже есть консолька). И решайте задачу построчно. - выполнили readlines, посмотрели что получилось, выролнили l. над каждой строчкой надо сидеть пока не получится то что нужно.

А у вас напечатано сообщение об ошибке когда там уже давным давно все вверх тормашками.
vexamd
py.user.next
Получилось
резултат показывает правельно

def sub(a, b):
return a-b
with open ('./expression.txt', ‘r’) as f:
with open ('./output.txt', ‘w’) as g:
lines = f.readlines()
for l in lines:
if ‘-’ in l:
operands = l.split('-')
rez = sub(int(operands), int(operands))
g.write(operands + “-” + operands.rstrip() + “=” + str(rez) + “\n”)
vexamd
Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB