Pra que serve o método isdigit()?

algo = input('Digite Algo:')
isdigit = algo.isdigit()
print(f'É um dígito? {isdigit}')

O que faz algo ser um digito de acordo com o isdigit?
Procurei na documentação mas não entendi…

O que exatamente você não entendeu?

A documentação é bem clara:

Retorna True se todos os caracteres na string são dígitos e existe pelo menos um caractere, False caso contrário.

Ou seja, se for digitado “123”, isdigit() retorna True, mas se digitar “abc” ou “a23”, retorna False. É uma forma de verificar se a string só contém dígitos. Se tiver apenas um caractere que não seja, retorna False.

Mas ela não se restringe aos dígitos de 0 a 9. Graças ao Unicode, existem muitos outros caracteres que também são considerados dígitos. Tanto que a documentação também diz o seguinte:

Formalmente, um dígito é um caractere que tem a propriedade com valor Numeric_Type=Digit ou Numeric_Type=Decimal.

Essa propriedade Numeric_Type é definida pelo Unicode. Podemos ver todos os caracteres que são considerados dígitos com o código abaixo:

from unicodedata import name

for i in range(0x10ffff + 1):
    s = chr(i)
    if s.isdigit():
    	print(s, name(s))

O resultado pode variar de acordo com a versão do Python (já que cada uma pode usar uma versão diferente do Unicode - a cada versão eles adicionam mais caracteres), mas a lista será bem grande. Só para mostrar os primeiros:

0 DIGIT ZERO
1 DIGIT ONE
2 DIGIT TWO
3 DIGIT THREE
4 DIGIT FOUR
5 DIGIT FIVE
6 DIGIT SIX
7 DIGIT SEVEN
8 DIGIT EIGHT
9 DIGIT NINE
² SUPERSCRIPT TWO
³ SUPERSCRIPT THREE
¹ SUPERSCRIPT ONE
٠ ARABIC-INDIC DIGIT ZERO
١ ARABIC-INDIC DIGIT ONE
٢ ARABIC-INDIC DIGIT TWO
٣ ARABIC-INDIC DIGIT THREE
٤ ARABIC-INDIC DIGIT FOUR
٥ ARABIC-INDIC DIGIT FIVE
٦ ARABIC-INDIC DIGIT SIX
٧ ARABIC-INDIC DIGIT SEVEN
٨ ARABIC-INDIC DIGIT EIGHT
٩ ARABIC-INDIC DIGIT NINE
...

Testei com o Python 3.7 e o resultado teve mais de 700 caracteres.

Enfim, é pra isso que serve o isdigit. Leitura complementar.

1 curtida

Entendi, então significa que o isdigit() serve para verificar tanto números, quantos símbolos que representem números, no caso os que estão registrados na unicode.

confesso que pensava que um dígito era tanto um número quanto uma letra rs, bom, sempre estamos aprendendo…

vlw :+1: