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

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

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

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

0
Daniel Vazome 1 Май 2019 в 23:15

4 ответа

Лучший ответ

if dna[end].isdigit is True:

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

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

4
John Gordon 1 Май 2019 в 20:19

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

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

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

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

1
Marc Sances 1 Май 2019 в 20:23

Две вещи:

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

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

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

1
TCFP 1 Май 2019 в 20:28

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

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

1
Davo 1 Май 2019 в 20:25