Моя программа не распознает .isdigit как True - PullRequest
0 голосов
/ 01 мая 2019

В моей программе я хочу проверить, является ли символ штриха общей цифрой (0-9)

.isnumeral работает странно, потому что считает алфавиты (a-z) Истиной, тогда я обнаружил, что .isnumeral на самом деле не ищет исключительно то, что я хочу - цифры. И через руководство я нашел .isdigit но:

dna = 'a3'
start = 0
end = 1
if dna[end].isdigit is True:
    print('Yes')

Это не работает, и «Да» не отображается, как ожидалось.

Ответы [ 4 ]

4 голосов
/ 01 мая 2019

if dna[end].isdigit is True:

isdigit() - это функция, а не атрибут.

Вы забыли скобки в конце, поэтому вы ссылаетесь на сам объект функции вместо результата вызова функции.

1 голос
/ 01 мая 2019

Две вещи:

  • нет необходимости сравнивать с истиной, просто используйте результат из isdigit ()

  • isdigit () isфункция, которая truey сама по себе, но не равна True

Проверьте Документы Python для получения дополнительной информации.

1 голос
/ 01 мая 2019

dna[end].isdigit в этом случае относится к функции str.isdigit.Если вы сделаете print(type(dna[end].isdigit)), вы поймете, что я имею в виду.

Чтобы вызвать функцию вместо этого, добавьте следующий паратез if dna[end].isdigit():

1 голос
/ 01 мая 2019

Вы должны вызвать метод isdigit():

dna = 'a3'
start = 0
end = 1
if dna[end].isdigit():
    print('Yes')

Это дает ожидаемый ответ, True.

Если вы сделаете dna[end].isdigit, он просто выдаст объект <built-in method isdigit of str object at address>, который не будет оцениваться.

...