Я новичок в Python, но вот шаблон, в котором мне нужна помощь, чтобы получить вывод
Вход
Входными данными будет одна строка, содержащая строку.
Выход
Вывод должен содержать сумму и среднее число чисел, которые появляются в строке. Примечание. Округлите среднее значение до двух знаков после запятой.
Объяснение
Например, если задана строка «Мне 25 лет и 10 месяцев», числа равны 25, 10. Ваш код должен вывести сумму чисел (35) и среднее число чисел (17,5) в новом линия.
Тестовые случаи:
мне 25 лет и 10 месяцев
Выход
35 17,5
Приведенный выше тестовый пример довольно прост, моя проблема возникает, когда вы пытаетесь решить что-то подобное.
Девушка64 35 пробелов numb6rs
Выход
05 66,66
Итак, в основном я спрашиваю, как вы извлекаете цифры, существующие между строкой символов. Сделать так, чтобы (164) не стало (1,6,4)
1 раз 3 % раз 4
Выход
8 2,67
Это еще один случай, когда (1,3) не следует извлекать как 13, как в тестовом примере 2. Это как раз тот случай, когда мне нужна помощь.
Код, который я разработал, и это сработало для меня, чтобы просто получить числа, которые не являются частью самого слова, и это хорошо сработало для случая 1:
sentence=input().split()
op=[]
for i in sentence:
if i.isdigit():
op.append(int(i))
else:
for j in i:
if j.isdigit():
op.append(int(j))
print(sum(op))
avg=sum(op)/len(op)
print(round(avg,2))
Я нашел это во время поиска подсказки, и это сработало для тестовых случаев 1 и 2, но все еще не работает для третьего, поскольку оно объединяет числа из одного и того же слова независимо от позиции.
a=input()
a=a.split()
t=[int(''.join([j for j in k if j.isdigit()])) for k in a if any(m.isdigit() for m in k)]
print(t)
if len(t)!=0:
print(sum(t))
print(sum(t)/len(t))
else:
print(sum(t))
print(sum(t))
Я не мог понять приведенный выше код, но надеялся, что кто-нибудь прояснит меня и подскажет, как решить эту проблему.
Если ваши числа являются положительными целыми числами, вы можете использовать приведенную ниже логику для их извлечения:
input_str = "1time3 %times4"
numbers = ''.join((ch if ch in '0123456789' else ' ') for ch in input_str)
numbers_list = [int(i) for i in numbers.split()]
print(f"Extracted numbers: {numbers_list}")
print(f"Sum: {sum(numbers_list)}, Average: {sum(numbers_list)/ len(numbers_list)}")