Portál AbcLinuxu, 10. května 2025 19:04

Dotaz: Python - Jak získat počet číslic ?

21.6.2015 23:38 Kolemjdoucí
Python - Jak získat počet číslic ?
Přečteno: 860×
Odpovědět | Admin
Ahoj, proč mi tohle nefungíruje ?
a = 26
b = len(a)
print(b) # Proč nedostanu výsledek 2 ?
Místo toho dostanu chybu TypeError: object of type 'int' has no len() kterou nevím jak odstranit. Díky

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (rADOn)
xxxxxx avatar 21.6.2015 23:52 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Python - Jak získat počet číslic ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
a = 26
b = len(str(a))
print(b) # Výsledek je 2
U int nelze použít len(), ale převodem na textový řetězec (str(a)) dostaneš '26' a tam už můžeš využít len(), což ti dá počet znaků ~ počet cifer. U desetinných čísel to samozřejmě započítá i desetinnou tečku.
xxxxxx avatar 21.6.2015 23:56 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Python - Jak získat počet číslic ?
Případně si můžeš vytvořit novou třídu z int-u, která to umožní rovnou:
class mujint(int):
    def __len__(self):
        return len(str(self))

a = mujint(26)
print(len(a)) # Vypíše 2
Není to úplně ideální, ale jen tak pro informaci.
22.6.2015 00:25 Kolemjdoucí
Rozbalit Rozbalit vše Re: Python - Jak získat počet číslic ?
D9ky moc, té třídě nerozumím, co to je za název metody to __len__ ? A jak to, že se spustí automaticky ? Nemělo by tam být __init__ ?
xxxxxx avatar 22.6.2015 10:46 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Python - Jak získat počet číslic ?
__init__ se volá při inicializaci objektu, v tomto případě při a = mujint(26). A když použiješ na něco len(), tak se python podívá, jestli má objekt definovanou metodu __len__, když ano, tak ji zavolá. Těchto metod s podtržítky je více a pěkně sepsáno je to tady.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.