@Babamurat

Почему строковой метод isdigit() вернет false на отрицательные числа?

Почему строковой метод isdigit() вернет false на отрицательные числа ?
например:
/////////////////////////////////
string='-1'
print (string.isdigit())
результат будет False
///////////////////////////////
Как обойти это ?

заранее спасибо !
  • Вопрос задан
  • 2019 просмотров
Решения вопроса 2
ScriptKiddo
@ScriptKiddo
def is_digit(n):
    try:
        int(n)
        return True
    except ValueError:
        return  False


https://stackoverflow.com/a/28279781
Ответ написан
Комментировать
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Почему

'-' - не цифра, как уже сказали

Как обойти это ?


Ну к примеру сделайте проверку на минус впереди, и проверяйте остаток. Делов-то:
is_adv_digit = lambda x: x.isdigit() if x[:1]!='-' else x[1:].isdigit()


>>> is_adv_digit('erwer')
False
>>> is_adv_digit('erwe5345r')
False
>>> is_adv_digit('345345')
True
>>> is_adv_digit('-345345')
True
>>> is_adv_digit('-')
False
>>> is_adv_digit('-1')
True
>>> is_adv_digit('1-')
False
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы