Skip to content

Instantly share code, notes, and snippets.

@giggio
Created August 23, 2016 14:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save giggio/f6e78cd9a458ab0370730deccd30ebb4 to your computer and use it in GitHub Desktop.
Save giggio/f6e78cd9a458ab0370730deccd30ebb4 to your computer and use it in GitHub Desktop.
unidades = ['um', 'dois', 'tres', 'quatro', 'cinco', 'seis', 'sete', 'oito']
dezenas = ['dez', 'vinte']
centenas = ['cento']
class Letras:
def __init__(self, numero):
if numero > 100:
centena = int(numero / 100)
dezena = int((numero - (centena * 100))/ 10)
unidade = numero - (centena * 100) - (dezena * 10)
letras_centena = self.conta(centena, centenas, e=True)
letras_dezena = self.conta(dezena,dezenas, e=True)
letras_unidade = self.conta(unidade,unidades)
if dezena > 0:
self.letras = letras_centena + letras_dezena + letras_unidade
else:
self.letras = letras_centena + letras_unidade
elif numero == 100:
self.letras = 3
elif numero > 20:
dezena = int(numero / 10)
unidade = numero % 10
self.letras = self.conta(dezena,dezenas, e=True) + self.conta(unidade,unidades)
else:
self.letras = len(unidades[numero - 1])
def conta(self, numero, lista, e=None):
somae = 1 if e else 0
return len(lista[numero-1]) + somae
"""Se os números de 1 a 5 fossem escritos em palavras: um, dois, três, quatro,
cinco, então teríamos utilizado 2 + 4 + 4 + 6 + 5 = 21 letras no total. Se
todos os números de 1 até 1000 fossem escritos em palavras, quantas letras nós
teríamos utilizado?"""
import unittest
from letras import Letras
class LetrasTest(unittest.TestCase):
def testUm(self):
letra_um = Letras(1)
self.assertEqual(letra_um.letras, 2)
def testDois(self):
letra = Letras(2)
self.assertEqual(letra.letras, 4)
def testTres(self):
letra = Letras(3)
self.assertEqual(letra.letras, 4)
def testQuatro(self):
letra = Letras(4)
self.assertEqual(letra.letras, 6)
def testCinco(self):
letra = Letras(5)
self.assertEqual(letra.letras, 5)
def testSeis(self):
letra = Letras(6)
self.assertEqual(letra.letras, 4)
def testSete(self):
letra = Letras(7)
self.assertEqual(letra.letras, 4)
def testOito(self):
letra = Letras(8)
self.assertEqual(letra.letras, 4)
def testVinteEUm(self):
letra = Letras(21)
self.assertEqual(letra.letras, 8)
def testVinteEDois(self):
letra = Letras(22)
self.assertEqual(letra.letras, 10)
def testVinteETres(self):
letra = Letras(23)
self.assertEqual(letra.letras, 10)
def testCem(self):
letra = Letras(100)
self.assertEqual(letra.letras, 3)
def testCentoEUm(self):
letra = Letras(101)
self.assertEqual(letra.letras, 8)
def testCentoEVinteEUm(self):
letra = Letras(121)
self.assertEqual(letra.letras, len("centoevinteeum"))
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment