Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 16.12.2017
Сообщений: 48

Найти сумму чисел, разделённых запятыми

31.05.2024, 09:39. Показов 3353. Ответов 26

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть вопрос по программе.
Нужно посчитать сумму чисел, разделённых запятыми.
Вот попытки написать код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
line = '12,34,56'
str_list = line.split()
 
 def str_to_num(str):
     str = str.strip()
     if '.' in str and str.replace(',').isdigit():
         return float(str)
     elif str.isdigit():
         return int(str)
 
 num_list = []
 for i in str_list:
     n = str_to_num(i)
     if i is not None:
         num_list.append(str_to_num())
 
 s = sum(num_list)
 print(s)
А на выходе такая ошибка:

Traceback (most recent call last):
File "C:\Users\Yarior\PycharmProjects\Най ти сумму чисел, разделенных запятыми\main.py", line 15, in <module>
num_list.append(str_to_num())
TypeError: str_to_num() missing 1 required positional argument: 'str'
Подскажите в чём ошибка.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2024, 09:39
Ответы с готовыми решениями:

Создайте строку из 10 фамилий студентов Вашей группы, разделенных запятыми
Всех приветствую, помогите пожалуйста решить данную задачу) Создайте строку из 10 фамилий студентов Вашей группы, разделенных запятыми. ...

Список фамилий, разделенных запятыми, задан в файле input.txt в произвольном порядке. Упорядочить его по алфавиту
Список фамилий, разделенных запятыми, задан в файле input.txt в произвольном порядке. Упорядочить его по алфавиту, записать в файл...

В edit1 находится массив целых чисел разделенных запятыми. Найти ширину этого массива
В edit1 находится массив целых чисел разделенных запятыми. Найти ширину этого массива, т.е |x max - x min|

26
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38209 / 21142 / 4312
Регистрация: 12.02.2012
Сообщений: 34,755
Записей в блоге: 14
02.06.2024, 06:34
Студворк — интернет-сервис помощи студентам
YuS_2, если корежить исходные данные, то... ну попробуйте в своем коде поставить две запятых вместо одной
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.06.2024, 08:31

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import regex as re
from unicodedata import numeric
 
 
def str_to_int(s):
    res = 0
    for i in s:
        if res:
            res *= 10
        res += numeric(i)
    return res
 
 
line = '123, ²³,⁴⁵,,,,,,⁶⁷,⁸,⁹⁹'
print(sum(map(str_to_int, re.findall(r'\p{N}+', line))))
3
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
02.06.2024, 09:41
Цитата Сообщение от Catstail Посмотреть сообщение
если корежить исходные данные, то... ну попробуйте в своем коде поставить две запятых вместо одной
Да не про то речь... мой-то код, благодаря int(), завалится на любой нецифре или нестандартной цифре юникода, запятые и не понадобятся.
Я о том, что:
Цитата Сообщение от YuS_2 Посмотреть сообщение
описанный метод получения чисел из текста, всё же, не прямой путь.
и:
Цитата Сообщение от YuS_2 Посмотреть сообщение
здесь используется "случайное" совпадение последовательного расположения этих кодов, но его могло и не быть, поэтому это хак
ну и как следствие, возвращаясь к тому, что:
Цитата Сообщение от YuS_2 Посмотреть сообщение
то и ord() надо бы реализовать
для большей универсальности... при этом, конечно, понимая, что идеал не достижим...

Цитата Сообщение от iSmokeJC Посмотреть сообщение
re.findall
Вот и регулярки подоспели! Рок-н-ролл!
Но уже regex реализовывать не будем...

PS
Собрал в кучу все варианты (минимум корректировок, для работоспособности):
4 варианта
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import regex as re
from unicodedata import numeric as num
 
line = '123, ²³,⁴⁵,,,,,,⁶⁷,⁸,⁹⁹'
#nil = '0'
nil = '⁰'
#nil = '₀'
 
#=====
a,arr = '',[]
for x in line:
    if x == ',' and len(a) > 0:
        arr.append(int(a))
        a = ''
    elif x.isdigit():
        a += str(int(num(x)))
arr.append(int(a))
print(arr, sum(arr))
 
#=====
buf = []
summ = 0
for i in line:
    if i == ',' and len(buf)>0:
        summ += int(''.join(buf))
        buf.clear()
    elif i.isdigit():
        buf.append(str(int(num(i))))
summ += int(''.join(buf))
print(summ)
 
#=====
a=[]
acc=0
flg=False
for s in line:
    if s==',':
        if flg:
            a.append(acc)
        acc=0
        flg=False
    elif s.isdigit():
        acc=acc*10+ord(s)-ord(nil)
        flg=True
if flg:
    a.append(acc)
    
print(a,sum(a))
 
#=====
def str_to_int(s):
    res = 0
    for i in s:
        if res:
            res *= 10
        res += int(num(i))
    return res
print(sum(map(str_to_int, re.findall(r'\p{N}+', line))))
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.06.2024, 09:43
YuS_2, оформляй в либу, и на PyPI ее!
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
02.06.2024, 09:49
Цитата Сообщение от iSmokeJC Посмотреть сообщение
на PyPI ее!
это коллективный труд...

Добавлено через 2 минуты
да и корректный ord() для варианта №3, пока не реализован
0
0 / 0 / 0
Регистрация: 16.12.2017
Сообщений: 48
05.06.2024, 19:16  [ТС]
CatStail, здравствуйте.
В вашем коде выдаёт.
"23,45,67,8,99"
Сумму не выдаёт.

Добавлено через 4 минуты
Yus 2, здравствуйте.
Ваш код выдаёт такое.
Traceback (most recent call last):
File "C:\Users\Yarior\PycharmProjects\Най ти сумму чисел, разделенных запятыми_1\main.py", line 7, in <module>
arr.append(int(a))
ValueError: invalid literal for int() with base 10: ',12'

Добавлено через 4 минуты
Рыжий Лис, Здравствуйте.
У вас максимально близко к ответу, но считает только крайние.
Т.е в моем примере "12,34,56" считает только "12,34".
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
05.06.2024, 19:25
Цитата Сообщение от Яриор Корсаинес Посмотреть сообщение
Сумму не выдаёт.
ну, так добавьте функцию суммирования...

Цитата Сообщение от Яриор Корсаинес Посмотреть сообщение
Ваш код выдаёт такое.
Вы самостоятельно в питоне ничего не умеете делать?
измените код на такой:
Python
1
2
3
4
5
6
7
8
9
10
11
12
from unicodedata import numeric as num
line = '123, ²³,⁴⁵,,,,,,⁶⁷,⁸,⁹⁹,1①,⒐⓷'
a,arr = '',[]
 
for x in line:
    if x == ',' and len(a) > 0:
        arr.append(int(a))
        a = ''
    elif x.isdigit():
        a += str(int(num(x)))
if len(a)>0:arr.append(int(a))
print(arr, sum(arr))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.06.2024, 19:25

Считать двумерный массив чисел, разделенных запятыми, из файла
Дан файл типа: 50, 3, 384, 0, 32 40, 28, 44, 3, 75 405, 82, 95, 24, 93 Как считать из него числа в двумерный массив? Думал, что...

Чтение чисел с плавающей точкой из файла, разделенных запятыми в переменные
Здравствуйте! У меня есть файл &quot;file.dat&quot; вида 2 82.7957421541214,55.0893564395402 82.7997922897339,55.0893564395402 ...

Найти в файле, содержимое которого состоит из слов, разделенных запятыми, найти определенное слово
Такой вот вопрос, открываю файл и вывожу содержимое в Memo с помощью Memo1-&gt;Lines-&gt;LoadFromFile(&quot; *.txt &quot;); Как найти в...

В строке, разделенных пробелами, запятыми, точками, найти 5 самых длинных слов
Задание: Дана строка слов, разделенных пробелами, запятыми и точками. Сформируйте новую строку из пяти самых длинных слов. Определите...

Массив: Найти их сумму и сумму чисел, разделенных на 2, сравнить эти суммы между собой.
Нужно написать программу используя одномерные массивы. Буду благодарен. Есть действительные числа X1, ..., X15. Найти их сумму и сумму...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru