Ce face str.isdigit(), isdecimal() și isnumeric()
Cele trei metode returnează True dacă textul nu este gol și toate caracterele sunt „cifre”, dar diferă prin ce consideră cifră. isdecimal() acceptă doar cifrele zecimale (0-9 și echivalentele din alte alfabete), adică exact ce poate citi int(). isdigit() acceptă în plus exponenți precum ². isnumeric() acceptă și fracții (½) sau cifre romane Unicode.
Niciuna nu acceptă semnul minus, punctul zecimal sau spațiile. Pentru a verifica un număr real, încearcă float(text) într-un try. bytes.isdigit() verifică doar cifrele ASCII.
Ce returnează
True sau False.
Exemple
Exemplul 1: Diferențele dintre ele
for t in ["2026", "²", "½", "-5", "3.5", ""]:
print(repr(t), t.isdecimal(), t.isdigit(), t.isnumeric())
Rezultat
'2026' True True True
'²' False True True
'½' False False True
'-5' False False False
'3.5' False False False
'' False False False
Exemplul 2: Validarea unui cod poștal
for cod in ["700001", "70A001", "7000"]:
valid = len(cod) == 6 and cod.isdecimal()
print(cod, "valid" if valid else "invalid")
print(b"123".isdigit())
Rezultat
700001 valid
70A001 invalid
7000 invalid
True
Greșeli frecvente
- Validezi cu
isdigit()și apoi apeleziint(): textul"²"trece testul, darint("²")dăValueError. Foloseșteisdecimal().
Comenzi înrudite
str.isalpha(), isalnum(), isascii(), isspace(), isprintable(), isidentifier(): Verifică ce fel de caractere conține un text: doar litere, litere și cifre, doar ASCII, doar spații etc.int(): Tipul numerelor întregi; int() transformă un text sau un număr zecimal în număr întreg.try / except / else / finally: Prinde și tratează erorile (excepțiile), ca programul să nu se oprească brusc.