Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для medusa_l_0011
7 / 6 / 1
Регистрация: 08.05.2021
Сообщений: 86

Сумма чисел в строке

26.08.2022, 09:08. Показов 5171. Ответов 36
Метки нет (Все метки)

Доброго времени суток. На курсе задали задачу:
В виде строки записано арифметическое выражение, например:
"10 + 25 - 12" или "10 + 25 - 12 + 20 - 1 + 3" и т. д. То есть, количество действий может быть разным.
Необходимо выполнить вычисление и результат отобразить на экране. Полагается, что в качестве арифметических операций здесь используется только сложение (+) и вычитание (-), а в качестве операндов - целые неотрицательные числа. Следует учесть, что эти операторы могут быть записаны как с пробелами, так и без них.

Решаю второй день, но видимо явно не хватает знаний.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
stroka = input()
 
for elem in stroka:
    if elem == "+":
        elem = elem.replace("+", "_+")
    elif elem == "-":
        elem = elem.replace("-", "_-")
    elif elem == " ":
        elem = elem.replace(" ", "")
    elif elem == "'":
        elem = elem.replace("'", "")
 
lis = list(map(int, stroka.split("_")))
print(sum(lis))
Ну и, как результат - ОШИБКА:
Traceback (most recent call last):
File "/media/medusa/ARHIVE_PROGRAMS/obuchenie/Pithon/Stepik/code/циклы_итераторы_генераторы списков/оператор_цикла_for_функция_enumerate/задача3_арифметические_вычисления.py", line 24, in <module>
lis = list(map(int, stroka.split("_")))
ValueError: invalid literal for int() with base 10: '10+25 - 12'

На курсе никто не помогает - он бесплатный поэтому делай. как знаешь. Решение должно быть через enumerate, но как это увязать с условием пока не пойму. Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2022, 09:08
Ответы с готовыми решениями:

Сумма чисел в строке
Строки могут быть разными, с числами и без. Среди множества вводимых строк нужно выбрать те, в которых больше всего чисел, а среди...

Сумма чисел в строке
Строки могут быть разными, с числами и без. Среди множества вводимых строк нужно выбрать те, в которых больше всего чисел, а среди...

Сумма чисел в строке
Добрый вечер, В строке могут встречаться цифры и иные символы. Числом будем считать последовательность цифр, которая не может быть...

36
 Аватар для Aviz__
2761 / 2068 / 510
Регистрация: 17.02.2014
Сообщений: 9,500
28.08.2022, 08:49
Цитата Сообщение от Catstail Посмотреть сообщение
это слишком просто.
это искусство программирования, т.е. много путей к ответу.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от iSmokeJC Посмотреть сообщение
какой-нибудь дебил
на море те пора, братуха)).

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38207 / 21140 / 4311
Регистрация: 12.02.2012
Сообщений: 34,752
Записей в блоге: 14
28.08.2022, 08:56
Цитата Сообщение от Aviz__ Посмотреть сообщение
это искусство программирования, т.е. много путей к ответу.
- при всем уважении, не могу это назвать словом "искусство". Назвать употребление eval в данном контексте словом "искусство", это то же самое, что называть "искусством" чижика-пыжика.
0
 Аватар для VistaSV30
988 / 332 / 79
Регистрация: 10.04.2012
Сообщений: 1,247
Записей в блоге: 4
28.08.2022, 09:58
Вариант на тему eval
Python
1
2
3
4
from sympy import  simplify
a = '18+27 - 14'
 
print(simplify(a))
1
 Аватар для Aviz__
2761 / 2068 / 510
Регистрация: 17.02.2014
Сообщений: 9,500
28.08.2022, 10:03
Цитата Сообщение от Catstail Посмотреть сообщение
Назвать употребление eval в данном контексте
в данном контексте, термин "искусство" относится, ко всем решениям ведущим к ответу)).
0
 Аватар для medusa_l_0011
7 / 6 / 1
Регистрация: 08.05.2021
Сообщений: 86
28.08.2022, 16:03  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
1
print(eval(input()))
Этот подход я знал изначально, потому спасибо, конечно. Но тут вопрос принципиальный - мне кажется не все можно решить именно так. И потом знания должны быть многогранными. Хочется знать. возможно я не прав. Это мое субъективное мнение без претензий. Спасибо.)))

Добавлено через 11 минут
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Правильно терзают
Я понял. Видимо должно быть так:
Python
1
2
3
4
5
6
7
import re
d = '29.12.2009'
p = re.compile(r"^[0-3][0-9]\.[01][0-9]\.[12][09][0-9][0-9]s")
if p.search(d):
    prind('Дата введена правильно')
else:
    prind('Дата введена не правильно')
Цитата Сообщение от Catstail Посмотреть сообщение
сделал ролик, в котором пытаюсь объяснить алгоритм.
Ролик скачал. Буду смотреть и думать.
0
 Аватар для Aviz__
2761 / 2068 / 510
Регистрация: 17.02.2014
Сообщений: 9,500
28.08.2022, 16:06
Цитата Сообщение от medusa_l_0011 Посмотреть сообщение
И потом знания должны быть многогранными.
конечно! поэтому тут все и накидали, кому что не лень)). тут трудно, что-то советовать кроме https://ru.wikipedia.org/wiki/... ммирования
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.08.2022, 16:35
Цитата Сообщение от medusa_l_0011
Видимо должно быть так:
Неа. Твоя регулярка "съест" 39 число 19 месяц например.
И что это за s в конце?
0
 Аватар для medusa_l_0011
7 / 6 / 1
Регистрация: 08.05.2021
Сообщений: 86
28.08.2022, 16:56  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
тут трудно, что-то советовать кроме https://ru.wikipedia.org/wiki/... ммирования
Семь томов Кнута - это серьезно. Даже ля простого чтения потребуется много времени. Однако я скачал все 7-мь томов. Спасибо.

Добавлено через 4 минуты
Цитата Сообщение от iSmokeJC Посмотреть сообщение
И что это за s в конце?
Если честно, то, как я понял это должно быть привязкой к концу всей строки. Так ведь 39 число 19 месяц не существует. Получается, что у меня будет такая дата? Видимо я опять что-то не понял. (((
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.08.2022, 17:17
medusa_l_0011, конец строки - $
Цитата Сообщение от medusa_l_0011 Посмотреть сообщение
Так ведь 39 число 19 месяц не существует
Вот именно )))
0
 Аватар для medusa_l_0011
7 / 6 / 1
Регистрация: 08.05.2021
Сообщений: 86
28.08.2022, 17:21  [ТС]
Одну ошибку нашел - не s, а $ должно быть. Но это не решает вопрос с датой. А как же ограничить предел???
0
5526 / 2879 / 572
Регистрация: 07.11.2019
Сообщений: 4,774
28.08.2022, 17:34
Code
1
(0[1-9])|([1-2][0-9])|(3[0-1])
как-то так, для даты, для месяца - аналогично, если не ошибаюсь с тем, что '|' это 'или'....
но все равно это не поможет с 31.06.2022 или 30.02.2017
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.08.2022, 18:02
Да, это из той же оперы, что и айпишники регуляркой проверять, только еще хуже
1
 Аватар для medusa_l_0011
7 / 6 / 1
Регистрация: 08.05.2021
Сообщений: 86
28.08.2022, 18:10  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Вот именно )))
В общем получилось так:
Python
1
2
3
4
5
6
7
import re
d = '2.12.2999'
p = re.compile(r"^([1-9]|[12]\d|[3][0-1])\.(0?[1-9]|1[0-2])\.[12][09][0-9][0-9]$")
if p.search(d):
    print('Дата введена правильно')
else:
    print('Дата введена не правильно')
Однако меня очень напрягает строка (0?[1-9]|1[0-2]). Пока я не написал 0? значения месяцев были умопомрачительными. Теперь все распознается правильно, но я не понимаю что делает этот 0?. Гугл мне сказал, что это квантификатор. Означаюет ноль или одно вхождение символа или группы символов перед ним. Но у меня то все символы после него.((( Спасибо.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.08.2022, 18:21
Цитата Сообщение от medusa_l_0011 Посмотреть сообщение
я не понимаю что делает этот 0?
Это значит, что ноль может быть, а может и не быть. Т.е. сматчится и 2, и 02.
0
 Аватар для medusa_l_0011
7 / 6 / 1
Регистрация: 08.05.2021
Сообщений: 86
28.08.2022, 18:29  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Т.е. сматчится и 2, и 02.
Все пойду застрелюсь. Не на долго. Спасибо. Просто не пойму. почему без этого 0? месяцы не тормозились на отметке 12, но фиг-вам, разберусь все равно. Этот 0? встречается практически везде. Значит есть в нем что-то магическое.
0
 Аватар для Aviz__
2761 / 2068 / 510
Регистрация: 17.02.2014
Сообщений: 9,500
28.08.2022, 19:27
Цитата Сообщение от medusa_l_0011 Посмотреть сообщение
потребуется много времени
если взять в привычку читать каждый день, то удивишься, как не много)).
Цитата Сообщение от medusa_l_0011 Посмотреть сообщение
разберусь все равно.
хорошее стремление, но имей ввиду, можно надорваться... без дураков, потом вообще ничего хотеться не будет, а от компа блевать захочется! впрочем, все нужно прочувствовать на себе.
0
 Аватар для medusa_l_0011
7 / 6 / 1
Регистрация: 08.05.2021
Сообщений: 86
01.09.2022, 16:44  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
впрочем, все нужно прочувствовать на себе.
И я так считаю. Все надо пропустить через себя. Ну если есть желание добиться чего-то.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.09.2022, 16:44

Сумма чисел в строке
Есть строка 567 Как посчитать сумму чисел в строке ? Или разбить потом использовать sum

Сумма чисел в строке
Мне нужно суммировать по 2 элемента строки string (1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 0 ) поочередно. Если больше единицы, то выводим 0, единица...

Сумма чисел в строке
Задана строка, содержащая целые числа и слова, разделенные пробелами (одним или несколькими). Определить сумму целых чисел в строке. ...

сумма чисел встречающихся в строке
Добрый вечер, уважаемые форумчане! Просьба помощи в написании программы на С++ нужно написать программу, которая подсчитывает сумму...

Сумма отдельных чисел в строке
Задано случайная строка . Подсчитать сумму отдельных чисел в строке


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru