Как оценить ввод строки и проверить, является ли она десятичной - PullRequest
2 голосов
/ 25 апреля 2019

Я использую Python 3 и пытаюсь выяснить, как оценить строку ввода пользователя и проверить наличие определенных символов.

Я знаю, что этот заголовок, вероятно, заставит его звучать так, как будто я не слышалметода .isdecimal (), но на самом деле я пытаюсь разрешить пользователю вводить некоторое число в виде десятичного числа, включая точку, и это то, что, кажется, затрудняет оценку.

Например,,

dec = input ()

dec.isdecimal ()

Возвращает False, если у меня есть ввод 0.5, я мог бы преобразовать ввод в десятичную, возможно, но если бы яя не хочу ограничивать ввод пользователя целыми числами, я не уверен, как еще я могу приблизиться к этой оценке.

Ответы [ 4 ]

0 голосов
/ 25 апреля 2019

Вы попросили пользователя Enter number:, и пользователь ответил oh man i think my number is 5.3, good?

, чтобы извлечь число 5.3 из этого эмоционально пользовательского ответа, вы должны использовать regex

import re

text = 'oh man i think my number is 5.3, good?'
num = re.search(r'\d+.?\d+', text).group()
print(float(num))

вывод:

5.3
0 голосов
/ 25 апреля 2019

возможно, используйте Decimal конструктор


from decimal import Decimal

user_input = input()
try:
    dec = Decimal(user_input)
except:
    dec = None

хорошо, вы можете вызвать эту ошибку, если выполнение программы невозможно после ввода неверного значения.

0 голосов
/ 25 апреля 2019

IIUC, вы просто хотите проверить, есть ли в вашей строке десятичная дробь.В этом случае вы можете просто сделать следующее.

inp_string = input()

def check_decimal(inp_string):
    return ('.' in inp_string)

check_decimal(inp_string)
0 голосов
/ 25 апреля 2019

Возможно, попытайтесь проанализировать строку как float и вернуть True в случае успеха?

def stringIsFloat(s):
    try:
        float(s)
        return True
    except ValueError:
        return False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...