Почему отрицательные числа не проходят проверку isdigit()

Рейтинг: 1Ответов: 2Опубликовано: 14.02.2023

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

srt = [x for x in '-4 -5 +'.split()]
for i in srt:
    if i.isdigit():
        print(True)

Вывод: Пусто


А если я использую тоже самый код только с положительными числами

srt = [x for x in '4 5 +'.split()]
for i in srt:
    if i.isdigit():
        print(True)

Вывод : True True


Может кто то обьяснить почему так отрабатывает и как сделать проверку у отрицательных чисел?

Ответы

▲ 2

метод isdigit возвращает True, только если строка состоит полностью из цифр (0123456789)

можно попробовать реализовать свой isdigit с поддержкой отрицательных чисел

def isdigit(s):
    if s.startswith("-"):
        s = s[1:]
    return s.isdigit()
▲ 0

Можно использовать такую проверку:

if i.lstrip("-").isdigit():

Подсмотрено на английском СО.