Created
December 18, 2010 19:53
-
-
Save tuxes/746822 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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