Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15

Автоматизация математических действий

15.11.2022, 07:45. Показов 996. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Есть скрипт с вычитанием. Логика следующая.

1. берет из 1.txt одно число
2. берет из 2.txt другое число
3. производит вычитание и ответ уходит в файл out.txt

Все работает прекрасно. Но каждую итерацию с ответом из out.txt нужно повторять в ручную.
т.е. если я хочу из ответа полученного в файле out.txt вычесть снова то же число из файла 2.txt, то мне нужно вручную скопировать данные из out.txt в 1.txt и вновь произвести вычитание.

Подскажите пожалуйста, как процесс зациклить n-раз?
т.е. например:
1. берет из 1.txt число (5)
2. берет из 2.txt число (1)
3. вычитает его n-раз из ответа (например в скрипте будет указано вычесть 5 раз)

пример:
5-1
4
4-1
3
3-1
2
2-1
1
1-1
0

и в файл out.txt запишет следующие данные:
4
3
2
1
0

p.s. сам скрипт приложу ниже
Python
1
2
with open('1.txt', 'r') as f1, open('2.txt', 'r') as f2, open('out.txt', 'w') as f3:
    f3.write('\n'.join(map(lambda x: f'{int(x[0], 16) - int(x[1], 16)}', zip(f1.read().split(), f2.read().split()))))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2022, 07:45
Ответы с готовыми решениями:

Определить результат математических действий
Дан файл со следующими символами: 3+4+5-2+10-5+10+ 60-30-5-6+100- 5-46+6 Необходимо найти ответ выражения. Я знаю, что можно...

Определите результат математических действий, указанных в файле
Текстовый файл d15-3.txt состоит не более чем из 10**6 цифр и знаков “+”, “-”, “*”. Знак «+» означает сложение, знак «-» вычитание, знак...

Автоматизация действий в браузере (для онлайн-игры)
Здравствуйте. Заранее говорю, я НЕ прошу Вас решать за меня задачу полностью. Хочу просто, чтобы вы меня направили. Хочу попробовать...

18
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.11.2022, 08:49
А что мешает сразу вычесть значение из 1 файла * n ?
0
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
15.11.2022, 12:16  [ТС]
iSmokeJC добрый день! Долго объяснять.
Если кратко - обязательное условие, чтобы работа была с 2 файлами. 1.txt и 2.txt
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
15.11.2022, 12:41
Цитата Сообщение от max1388 Посмотреть сообщение
Если кратко
если кратко то записывайте данные из out.txt в 1.txt средствами питона
0
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
15.11.2022, 13:09  [ТС]
Semen-Semenich думаю расписывать цепочку поступающей информации, которую пока не представляется возможным поменять, что явно усложняет задачу - не имеет смысла. Поэтому и написал - "кратко".
"средствами питона"
Именно с этой просьбой и обратился. Потому что моих навыков и знаний явно пока недостаточно. Буду очень признателен за помощь.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.11.2022, 13:55
Лучший ответ Сообщение было отмечено max1388 как решение

Решение

Code
1
2
3
4
5
6
7
8
9
открыть файл 2 чтение
повторить n раз:
   открыть файл 1 чтение
   создать список из разностей 
   закрыть файл 1
   открыть файл 1 запись
   записать список
   закрыть файл 1
закрыть файл 2 чтение
0
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
15.11.2022, 15:34  [ТС]
iSmokeJC Спасибо Вам громадное за ответ!
Попытался сделать как Вы написали - не запустилось.
Явно где то допускаю ошибку. Если поправите - буду Вам очень признателен!
В любом случае - большое спасибо еще раз!

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
with open('2.txt', 'r') as f2:
     for line in f2:
    string = str(line.strip("\n") - "\n") * 10
            with open('1.txt', 'r') as f1:
             lambda x: f'{int(x[0], 16) - int(x[1], 16)}'
                 saveList.append(string)
            f1.close()
                with open('1.txt', 'w') as f1:
                     saveList = list(map(str, saveList))
                     f1.writelines(saveList)
                f1.close()
f2.writelines(saveList)
f2.close()
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.11.2022, 15:44
Лучший ответ Сообщение было отмечено max1388 как решение

Решение

Цитата Сообщение от max1388 Посмотреть сообщение
не запустилось
Разумеется. Метод научного тыка как правило не работает
Python
1
2
3
4
5
6
7
8
n = 5
with open('2.txt', 'r') as f2:
    nums2 = list(map(lambda x: int(x, 16), f2.read().split()))
for _ in range(n):
    with open('1.txt', 'r') as f1:
        nums1 = list(map(lambda x: int(x, 16), f1.read().split()))
    with open('1.txt', 'w') as f1:
        f1.write('\n'.join(map(lambda x: f'{int(x[0], 16) - int(x[1], 16)}', zip(nums1, nums2))))
0
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
15.11.2022, 16:06  [ТС]
iSmokeJC боюсь в моем случае, даже когда идет помощь не всегда работает. Тяжеловато в возрасте дается новая наука.
Не закидывайте камнями, пожалуйста.
После запуска скрипта файл 1.txt мне все время пустой выдает.
Можете, пожалуйста, у себя разок посмотреть?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.11.2022, 16:49
Лучший ответ Сообщение было отмечено max1388 как решение

Решение

Python
1
2
3
4
5
6
7
8
n = 5
with open('2.txt', 'r') as f2:
    nums2 = list(map(lambda x: int(x, 16), f2.read().split()))
for _ in range(n):
    with open('1.txt', 'r') as f1:
        nums1 = list(map(lambda x: int(x, 16), f1.read().split()))
    with open('1.txt', 'w') as f1:
        f1.write('\n'.join(map(lambda x: f'{hex(x[0] - x[1])[2:]}', zip(nums1, nums2))))
1
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
15.11.2022, 17:46  [ТС]
iSmokeJC Спасибо громаднейшее!!! все работает!!
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.11.2022, 17:49
update
Python
1
f1.write('\n'.join(map(lambda x, y: f'{hex(x - y)[2:]}', nums1, nums2)))
1
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
16.11.2022, 16:15  [ТС]
iSmokeJC скажите пожалуйста, вы можете добавить в данный скрипт ограничение?
вычитание останавливается при достижения значения равного/или меньше x?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.11.2022, 16:32
Значения чего?
0
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
16.11.2022, 17:12  [ТС]
например я из ffffffffff (1.txt) вычитаю ff (2.txt) n-раз.

чтобы при достижения значения ffffffff0 или меньше, вычитание ff останавливалось.

в идеале конечно и счетчик вычитаний. но я не знаю, возможно ли ограничение подобное в принципе поставить в рамках подобной задачи.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.11.2022, 17:15
Очень туманно. Вот допустим в первом файле 100 разных значений. Какое из них отслеживать?

Не по теме:

Цитата Сообщение от max1388 Посмотреть сообщение
вы можете добавить
Могу, но не буду. Мне лень

1
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
16.11.2022, 17:34  [ТС]
Оу. Я исходил из соображений что в 1.txt только одно значение. т.е.
скрипт начинает работу:
ffffffffff (1.txt) -ff (2.txt) (это должно произойти n-раз)
ffffffff00 -ff
fffffffe01 -ff
fffffffd02 -ff
...
ограничение стоит : ffffffff0;
и когда вычитание добирается до этого значения, и должно произойти следующее вычитание:
ffffffff0 - ff (или значение(ffffffff0) на момент выполнения нового вычитания уже ниже, после предыдущего вычитания)
скрипт прекращает работу
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.11.2022, 18:03
Цитата Сообщение от max1388 Посмотреть сообщение
Я исходил из соображений что в 1.txt только одно значение
Тогда тут половину кода можно выкинуть

Добавлено через 5 минут
Python
1
2
3
4
5
6
7
8
9
10
11
n = 5
with open('2.txt', 'r') as f2:
    nums2 = int(f2.read(), 16)
for _ in range(n):
    with open('1.txt', 'r') as f1:
        nums1 = int(f1.read().strip(), 16)
        res = nums1 - nums2
        if res <= int('ffffffff0', 16):
            break
    with open('1.txt', 'w') as f1:
        f1.write(hex(res)[2:])
1
1 / 1 / 0
Регистрация: 14.11.2022
Сообщений: 15
16.11.2022, 18:07  [ТС]
а если как Вы написали ранее?
допустим там 100 значений, и при достижении определенного значения любым из них - скрипт завершает работу?

upd
Спасибо Вам громадное! Не увидел правки!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2022, 18:07
Помогаю со студенческими работами здесь

Автоматизация действий
Работаю на help'е, прилетает на почту письма по скрипту с erp, они стандартного шаблона, пользователь и др. инфа, нужно посмотреть, если ли...

Автоматизация действий на сайте
Есть браузерная игрушка. Решил немного автоматизировать для себя кое-какие процессы ) Вопрос в следующем. Пишу скрипт на python с...

Автоматизация действий на сайтах
Здравствуйте, меня интересует написание программ для автоматизации в интернете Например регистраторы аккаунтов либо грабберы какой либо...

Странный результат математических действий
Странные вещи творятся в этой винде - внизу привёл кусок кода для примера (не элемент программы, ибо она немалая и содержит несколько...

Совершение математических действий с элементами DataGridView
Добрый день! Имеется локальная БД Access, в которой содержится две связанных таблицы – Наименование услуги и действия по услуге. Обе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru