Как сделать этот код таким образом, чтобы он проверял, является ли следующий символ пробелом, разделенным цифрой или символом выражения c (+, -, *, /) - PullRequest
0 голосов
/ 07 февраля 2020

Этот сегмент кода должен проверять строку, чтобы увидеть, имеет ли он последовательно пробел и либо число, либо базовый c символ выражения (+, -, *, /)

def is_basic_expr(string):
    try:
        eval(string)
        return True 
    except:
        return False
print(is_basic_expr('1 + + 22'))

Приведенная выше функция вернет значение False, поскольку после оператора +

, например, нет числа:

("2 [пробел] + [пробел] 45 [пробел] * [пробел] 444" )

должен возвращать True ...

("- 1")

должен возвращать False ...

("3 [пробел] + [пробел] + [пробел] 67 ")

должен вернуть False ...

(" 45 [пробел] [пробел] + [пробел] [пробел] 3 ")

должен вернуть False ...

("1 [пробел +") *

должен вернуть False ...

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Без использования внешних библиотек, я бы go сказал об этом таким образом -

def is_basic_expr(s):
    try:
        exp_list = s.split(" ")
        if not exp_list[0].isnumeric():
            return False
        for i in range(1, len(exp_list), 2):
            if exp_list[i] not in ['+', '-', '*', '/']:
                return False
            if not exp_list[i+1].isnumeric():
                return False
        return True
    except:
        return False
0 голосов
/ 07 февраля 2020

Наивный вариант для этого:

def is_basic_expr(s):
    try:
        s = [l if l not in ("+", "-", "*", "/") else "+" for l in s]
        s = "".join(s)
        if "  " in s:
            return False
        s = s.split("+")
        if "" in s or " " in s:
            return False
        else:
            return True
     except:
        return False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...