Сложение чисел в одной строке
В одной переменной, в одну строку, через пробел записаны числа, допустим
numbers = ’12 23 45 75′ (кол-во таких чисел может быть рандомным), как выполнить сложение их всех?
P.S. Если нужно, то у нас может быть еще одна переменная, где будет записано, сколько всего чисел находится в переменной numbers
Отслеживать
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
Как сложить числа в строке?
Сложить числа в строке
Подскажите как сложить числа в строке. Например есть строка: char string1= as3f6j9fg77; ответ.
Нужно сложить 2 числа в строке
которе есть строки типа, 34+56 ,34-12 , 67*5 и тп, нужно в общем выполнить математически.
Сложить 2 числа заданных в строке
Вот они string a="100101,011" и string b="10101,110" Подскажите как это реализовать, ответ должен.
Сложить числа, вводимые в командной строке
Очень нужна программа на Си, которая будет складывать числа, вводимые в командной строке. Заранее.
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Регулярки можно использовать?
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
Нет.
Но, и регулярки тоже подойдут.
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Без регулярок как-то хитро разбивай строку по скобке и потом каждую подстроку смотри число в конце
>>> "Informatics: 40(л) 12(пр) 20(лаб)".split('(') ['Informatics: 40', 'л) 12', 'пр) 20', 'лаб)']
1 2 3 4 5
>>> re.findall(r'\d+', "Informatics: 40(л) 12(пр) 20(лаб)") ['40', '12', '20'] >>> ls = re.findall(r'\d+', "Informatics: 40(л) 12(пр) 20(лаб)") >>> sum(map(int, ls)) 72
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
Сообщение от Рыжий Лис 
Без регулярок как-то хитро разбивай строку по скобке и потом каждую подстроку смотри число в конце
PythonВыделить код
1
2
>>> «Informatics: 40(л) 12(пр) 20(лаб)».split(‘(‘)
[‘Informatics: 40’, ‘л) 12’, ‘пр) 20’, ‘лаб)’]
Так уже сделано.
Можно подробнее: «потом каждую подстроку смотри число в конце«, как это сделать?
![]()
7279 / 4102 / 1794
Регистрация: 27.03.2020
Сообщений: 6,926
1 2 3 4 5 6 7 8 9 10
_ = "Здравствуйте! Как сложить числа в строке: ""Informatics: 40(л) 12(пр) 20(лаб)?" num = 0 sim = '' for i in _ : if i.isdigit() : sim += i elif sim != '' : num += int(sim) sim = '' print(num)
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Да это тупо
1 2 3 4 5 6
s = 0 for i in "Informatics: 40(л) 12(пр) 20(лаб)".split('(')[:-1]: r = int(i.rsplit(' ')[1]) print(r) s += r print(s)
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
Сообщение от Gdez 
PythonВыделить код
1
2
3
4
5
6
7
8
9
10
_ = «Здравствуйте! Как сложить числа в строке: «»Informatics: 40(л) 12(пр) 20(лаб)?»
num = 0
sim = »
for i in _ :
if i.isdigit() :
sim += i
elif sim != » :
num += int(sim)
sim = »
print(num
Результат = 0.
![]()
7279 / 4102 / 1794
Регистрация: 27.03.2020
Сообщений: 6,926
Добавлено через 1 минуту
Выдели в коде что нибудь и вверху справа нажми «выделить код»
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
Сообщение от Gdez 
Возможно, но все равно — спасибо!
Добавлено через 15 минут
Рыжий Лис, а вот с такой строкой: «Fizra: — 30(пр) -» почему-то не хочет работать.
1 2 3 4 5 6
s = 0 for i in "Fizra: - 30(пр) -)".split('(')[:-1]: r = int(i.rsplit(' ')[1]) print(r) s += r print(s)
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
i.rsplit(' ', 1)
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
i.rsplit(' ', 1)
TypeError: int() argument must be a string, a bytes-like object or a number, not ‘list’
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
1 2 3 4 5 6
s = 0 for i in "Fizra: - 30(пр) -)".split('(')[:-1]: r = int(i.rsplit(' '), [1]) print(r) s += r print(s)
TypeError: ‘list’ object cannot be interpreted as an integer
Добавлено через 1 минуту
1 2 3 4 5 6
s = 0 for i in "Fizra: - 30(пр) -)".split('(')[:-1]: r = int(i.rsplit(' ')[1]) print(r) s += r print(s)
ValueError: invalid literal for int() with base 10: ‘-‘
4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949
Сообщение от SW Developer 
а вот с такой строкой: «Fizra: — 30(пр) -» почему-то не хочет работать
это совсем другие данные. вы же спокойно режете ножом масло но не сможете отрезать кусок металлической трубы, хотя в руках у вас тот же нож. так и в программировании. для других входных данных должен быть совсем другой участок кода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
def filter_num(str_): number = ''.join([i for i in str_ if i.isdigit()]) if number: return int(number) return 0 def sum_el(data): return sum([filter_num(str_) for str_ in data.split()]) data = 'Informatics: 40(л) 12(пр) 20(лаб)' data_2 = "Fizra: - 30(пр) -" data_3 = 'Informatics: 40(л) 12(пр) 20(лаб) Fizra: - 30(пр) -' print(sum_el(data)) print(sum_el(data_2)) print(sum_el(data_3))
1 2 3 4
72 30 102 >>>
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9

Сообщение было отмечено SW Developer как решение
Решение
SW Developer, ты издеваешься?
1 2 3 4 5 6
s = 0 for i in "Fizra: - 30(пр) -)".split('(')[:-1]: r = int(i.rsplit(' ', 1)[1]) print(r) s += r print(s)
Добавлено через 1 минуту
Сообщение от Semen-Semenich 
для других входных данных должен быть совсем другой участок кода.
Ничего не знаю, у меня работает. Хотя повторюсь: это тупо.
| Меню пользователя @ Gdez |
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
Сообщение от Semen-Semenich 
это совсем другие данные. вы же спокойно режете ножом масло но не сможете отрезать кусок металлической трубы, хотя в руках у вас тот же нож. так и в программировании. для других входных данных должен быть совсем другой участок кода.
Странно, я думал, это один тип данных — string. И встроенные методы работают одинаково, независимо, что прописано в строке.
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Вряд ли, просто код не понимает.
Добавлено через 1 минуту
Сообщение от SW Developer 
И встроенные методы работают одинаково, независимо, что прописано в строке.
1 2 3 4
>>> 'Fizra: - 30'.rsplit(' ') ['Fizra:', '-', '30'] >>> 'Informatics: 40'.rsplit(' ') ['Informatics:', '40']
Добавлено через 52 секунды
Где 2 кусочка, а где три. Чтобы всегда было два, добавим ещё один аргумент
1 2 3 4
>>> 'Fizra: - 30'.rsplit(' ', 1) ['Fizra: -', '30'] >>> 'Fizra: - 30'.rsplit(' ', 1)[1] '30'
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
r = int(i.rsplit(' ', 1)[1])
Вот теперь работает! Спасибо!
Добавлено через 1 минуту
Если бы я его понимал (код), то с такими «тупыми» вопросами не обращался.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Считать несколько строк из файла зная их количество и сложить числа в каждой строке
Дан файл input.txt, в нем: 5 //количетво строк 1 2 3 4 5// строка 1 и так далее. 1 2 3 10 2 3.

Как сложить числа в двух половинах одного числа?
Добрый день. Подскажите, пожалуйста, как сложить числа в двух половинах данного числа? Например.

Как сложить числа, не используя + и —
Задача найти сумму чисел не используя операторы =, -, +=, -= умножение, сложение не запрещено. 1).

Как сложить два числа?
Задание — сложение содержимых трех именованных ячеек памяти М1, М2 и МЗ. Ругается на строчку add .
Как сложить два числа
Привет, есть элемент <input type="hidden" value="20">, требуется изменить значение.
Как сложить два числа?
не получается сложить два числа, они просто стоят друг за другом Private Sub Button1_Click(ByVal.
Найти сумму цифр числа в Python
Для изучения базовых конструкций языка Python преподаватели обычно всегда предлагают простые и понятные задачи школьного уровня. Но, не смотря на это, такие задачи полезны и учат не только языку, но и умению реализовывать алгоритмы. Рассмотрим тут одну из таких задач.
Дано целое положительное число. Найти сумму цифр этого числа.
Рассмотрим несколько вариантов решения этой задачи. Простейший и самій очевидный способ решения задачи состоит в том, чтобы получить каждую из цифр, составляющих данное число. Для этого последовательно будем делить исходное число n на 10 нацело (находит разряды числа). Деление будем выполнять в цикле, в котором сразу же и будем накапливать требуемую сумму цифр — suma, а также запоминать результат деления для новой итерации цикла в ту же переменную n. Деление (цикл) продолжается пока число n не достигнет нулевого значения.
n=2021 suma = 0 while n > 0: suma = suma + n % 10 n //= 10 print(‘Suma =’, suma)
Но, можно обойтись и без деления. Для этого заданное число n преобразуем в строку s, а затем переберем в цикле последовательно все символы (цифры) этой строки. Но, чтобы их можно было сложить, они должны быть преобразованы в числовые значения — int(c). И дальше остается только воспользоваться функцией sum(), чтобы сложить эти все цифры и получить сумму цифр числа — suma.
n=2021 s=str(n) suma= sum(int(c) for c in s) print(‘Suma =’, suma)
Но, нам этого мало и мы идем дальше. А можно ли при решении этой задачи избавиться от цикла. Попробуем. Решение будет похоже на предыдущее, но цикл заменим встроенной функцией map() применяемой к каждому элементу некоторого объекта. В нашем случае это символы строки str(n), полученной преобразованием исходного числа в строку и ее составляющих символов в целые числа.
n=2021 suma=sum(map(int, str(n))) print(‘Suma =’, suma)
Если код этого примера не совсем понятен, то проще будет понять следующий код — там используем преобразование числа в список из цифр и дальше проходимся по нему функцией map()
Python: сложить два числа — что может быть проще?
Не буду ходить вокруг да около и сразу начну с правильного решения:
(a, b) = input().split()
print(int(a) + int(b))
Давайте теперь откроем ленту комментариев и почитаем, с чем сталкиваются пользователи при ее решении:
Пользователь под ником Міша павлович спрашивает, почему его решение не работает:
a = input()
b = input()
print(int(a)+int(b))
Если внимательно посмотреть на условие задачи, то из него видно, что переменные A и B передаются в одной строке через пробел, тогда как функция input() считывает введенную строку целиком. Таким образом в переменную A попадает строка «3 8», а переменная B не считывается вовсе.
Другой пользователь под ником Hmann wmann предлагает свое решение, которое не проходит проверку:
x = input("number 1: ")
y = input("number 2: ")
z = int(x) + int(y)
print(z)
Здесь проблема в том, что строки input(«number 1: «) сначала выводят на печать строку number 1: , а потом считывают значение из потока ввода, таким образом засоряя поток вывода, в который по условию должна попасть только сумма.
Еще одна потенциальная ошибка — это считать строку, разделить по символу пробела на 2 части и забыть, что результат разбиения имеет строковое значение, а не числовое. А оператор сложения примененный к строковым переменным имеет значение конкатенации.
>>> 3 + 8 11 >>> '3' + '8' '38'
В нашем примере для разбиения строк используется функция split() :
def parse_numbers_v1(input_str: str) -> (int, int):
(a, b) = input_str.split()
return int(a), int(b)
assert parse_numbers_v1("12 34") == (12, 34)
assert parse_numbers_v1("0 88") == (0, 88)
assert parse_numbers_v1("1056 4") == (1056, 4)
Давайте для тренировки попробуем представить, что такой функции у нас нет.
В этом случае, нам нужно будет найти в строке символ пробела с помощью метода find и, зная местонахождение пробельного символа, разделить строку на до и после. В языке Python это удобно делать, указывая значения начала и конца подстроки в квадратных скобках string[begin:end] . В случае отсутствие чисел begin и end будет подставлено начало и конец строки соответственно:
def parse_numbers_v2(input_str: str) -> (int, int):
space_pos = input_str.find(' ')
return int(input_str[:space_pos]), int(input_str[space_pos + 1:])
Как насчет усложнить задачу? Представим, что функция поиска по строке нам недоступна, также как и функция приведения строки к числу int() . В том случае, если число одно, нам нужно просто считывать символы строки по порядку от начала к концу, на каждом символе увеличивая чисто в 10 раз и прибавляя новый считанный символ, приведенный к числу по его номеру в таблице кодировки:
def parse_number(input_str: str) -> (int, int):
number = 0
for char in input_str:
number = number * 10 + ord(char) - 48
return number
assert parse_number('123') == 123
assert parse_number('0') == 0
assert parse_number('1066') == 1066
Для считывания двух символов логику нужно будет немного усложнить, добавив проверку на тип символа:
def parse_numbers_v3(input_str: str) -> (int, int):
number = 0
first_number = 0
for char in input_str:
if '0' '9':
number = number * 10 + ord(char) - 48
else:
first_number = number
number = 0
return first_number, number
Здесь мы уже работаем с символами в строке напрямую без каких-либо вспомогательных функций. Ускорило ли это работу? Давайте сравним три реализации функции parse_numbers по скорости их работы.
В качестве тестовых значений сгенерируем миллион строк с двумя числами, разделенными символами пробела:
from random import randint
test_input = []
for i in range(1_000_000):
test_input.append(str(randint(0, 10_000_000)) + ' ' + str(randint(0, 10_000_000)))
И разделим их с помощью трех вариантов функции, измерив скорость работы каждой из них:
begin_time = perf_counter()
for i in test_input:
parse_numbers_v1(i)
v1_time = perf_counter() - begin_time
begin_time = perf_counter()
for i in test_input:
parse_numbers_v2(i)
v2_time = perf_counter() - begin_time
begin_time = perf_counter()
for i in test_input:
parse_numbers_v3(i)
v3_time = perf_counter() - begin_time
print('First function:', v1_time)
print('Second function:', v2_time)
print('Third function:', v3_time)
Результат работы вполне наглядный:
First function: 0.7454843000000002 Second function: 0.9237659000000003 Third function: 3.8371637000000005
Как видим уход от стандартный функций языка, таких как split() и int() не только не дал роста производительности, но и существенно замедлил работу алгоритма.
Это хорошая демонстрация того, что зачастую лучше использовать стандартные возможности языка, чем писать ту же функциональность заново и по-своему. Стандартные функции обычно максимально оптимизированы разработчиками языка и едва ли имеет смысл соревноваться с ними в производительности, тем более используя тот же язык программирования.
