Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Программирование на Python. Яндекс Учебник. Вещественные числа

Юлия Чудиновских Ученик (115), закрыт 1 месяц назад
Дан текст на русском языке, в котором встречаются корректно записанные числа. Все действительные числа записаны через точку. В тексте может быть несколько предложений, заканчивающихся на точку, восклицательный или вопросительный знак. Все предложения разделяются пробелом.
Выведите все числа из текста в столбик.

Ввод

Добрый день. Сегодня чисел у меня 3. Одно из них — это 5.4. Ещё есть 3.14 и 7.8.Не могу убрать лишние точки...
Лучший ответ
Молот Шотландцев Высший разум (299931) 1 месяц назад
 s = 'Добрый день. Сегодня чисел у меня 3. Одно из них — это 5.4. Ещё есть 3.14 и 7.8.'.split(' ') 
n = list(filter(lambda x: x[0].isdigit(),s))
nn = list(map(lambda x: ''.join(list(x)[:-1]) if x[-1] == '.' else x, n))
result = list(map(lambda x: int(x) if not '.' in x else float(x),nn))
print(*result)
Остальные ответы
Артём Марченко Ученик (168) 1 месяц назад
Может сделать условие, что после точки нет пробела? Тогда не должны быть лишние точки. Я не очень разбираюсь, сам в C#
Улугбек Мастер (1328) 1 месяц назад
Может попробовать взять срез? Берёшь первый символ из строки, если он относится к числам, то смотри последний символ, если он равен точке, то удаляй последний символ и вноси эту строку в результат.

Что-то наподобие:
 a="5.1." 
if a[0].isdigit():
if a[-1] == ".":
a=a[:-1]
print(a)
Ирина Викторовна Лисенкова Профи (592) 1 месяц назад
import re
x = input()
p = '[\d]*[.]+[.,\d]+[\d]*[.][\d]*[.]+|[\d]*[.][\d]+|[\d]+'
if re.search (p, x) is not None:
for catch in re.finditer(p, x):
print(catch[0])
Андрей Швидченко Знаток (491) 1 месяц назад
s = input()
k = 0
s = ' ' + s
s = s.replace('. ', '')
for i in range(len(s) - 1):
if s[i] == ' ' and s[i+1].isdigit():
k += 1
print(k)
Похожие вопросы