Верните True / False для совпавшего или несопоставленного числа с плавающей запятой, используя Regex в Python - PullRequest
0 голосов
/ 21 марта 2020

Мне нужно напечатать (True) для всех совпадающих чисел с плавающей запятой в пользовательском вводе и (False), если ввод не является числом с плавающей запятой.

Я до сих пор пришел с этим:

import re

user_input = input() # the input will be (+4.9, 4.0, 2.89, 4, somerandomstuff)

pattern = re.compile(r'[+-]?[0-9]+\.[0-9]+') #pattern to match floating point numbers

matches = pattern.finditer(user_input)

for match in matches:
    print(bool(match))

Ожидаемые результаты:

input = (+4.9, 4.0, 2.89, 4, somerandomstuff, stackoverflow)

True True True False False False

Спасибо за помощь!

1 Ответ

0 голосов
/ 21 марта 2020

Предполагая, что пользовательский ввод всегда будет иметь формат, который вы указали, вы можете использовать float и пытаться преобразовать каждое значение в число с плавающей запятой. Также для фильтрации целых чисел вы можете проверить наличие . в каждой строке.

import re

user_input = input()

for match in user_input.strip("()").split(","):
    try:
        num = float(match)
        print("." in match)
    except ValueError:
        print(False)

Отпечатки:

True
True
True
False
False
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...