Skip to content

Instantly share code, notes, and snippets.

@tuxes
Created December 18, 2010 19:53
Show Gist options
  • Save tuxes/746822 to your computer and use it in GitHub Desktop.
Save tuxes/746822 to your computer and use it in GitHub Desktop.
# -*- coding:utf-8 -*-
def converter_numero_em_romano(numero):
"""
Código construído no primeiro coding dojo realizado na UFES.
Data: 18/12/2010
Problema: Números romanos
http://codingkata.org/katas/unit/caesar-lottery
Esta é a função responsável por converter um número inteiro em seu número
romano correspondente.
"""
romano = ''
if numero <= 4:
if numero == 0:
return romano
elif numero == 4:
return romano + 'IV'
else:
return romano + 'I' * numero
else:
if numero == 50:
return 'L'
elif numero >= 10:
if numero >= 40:
romano += 'XL'
return romano + converter_numero_em_romano(numero % 40)
else:
romano += 'X' * (numero / 10)
return romano + converter_numero_em_romano(numero % 10)
else:
if numero == 9:
return romano + 'IX'
romano += 'V'
return romano + converter_numero_em_romano(numero % 5)
#!/usr/bin/env python2.7
import unittest
from romanos import *
class RomanosTestCase(unittest.TestCase):
def test_retorna_IX_quando_a_entrada_eh_0(self):
assert converter_numero_em_romano(0) == ''
def test_retorna_I_quando_a_entrada_eh_1(self):
assert converter_numero_em_romano(1) == 'I'
def test_retorna_II_quando_a_entrada_eh_2(self):
assert converter_numero_em_romano(2) == 'II'
def test_retorna_IX_quando_a_entrada_eh_4(self):
assert converter_numero_em_romano(4) == 'IV'
def test_retorna_V_quando_a_entrada_eh_5(self):
assert converter_numero_em_romano(5) == 'V'
def test_retorna_IX_quando_a_entrada_eh_9(self):
assert converter_numero_em_romano(9) == 'IX'
def test_retorna_X_quando_a_entrada_eh_10(self):
assert converter_numero_em_romano(10) == 'X'
def test_retorna_IX_quando_a_entrada_eh_14(self):
assert converter_numero_em_romano(14) == 'XIV'
def test_retorna_XVIII_quando_a_entrada_eh_18(self):
assert converter_numero_em_romano(18) == 'XVIII'
def test_retorna_XXXIII_quando_a_entrada_eh_33(self):
assert converter_numero_em_romano(33) == 'XXXIII'
def test_retorna_XLVIII_quando_a_entrada_eh_48(self):
assert converter_numero_em_romano(48) == 'XLVIII'
def test_retorna_IX_quando_a_entrada_eh_44(self):
assert converter_numero_em_romano(44) == 'XLIV'
def test_retorna_IX_quando_a_entrada_eh_49(self):
assert converter_numero_em_romano(49) == 'XLIX'
def test_retorna_L_quando_a_entrada_eh_50(self):
assert converter_numero_em_romano(50) == 'L'
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment