""" Aplicar técnica de programación Test Driven Development (TDD) Implementar de manera iterativa e incremental la conversión de números enteros a números romanos*. - Se debe poder convertir cualquier número entero desde el 1 hasta el 1000. - Escribe el código y los tests en un archivo de Python. *referencia con la relación de los números y los símbolos: Número entero Número romano 1 I 5 V 10 X 50 L 100 C 500 D 1000 M """ import unittest class NumeroRomano(object): valores = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1] simbolos = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'] def conv_a_romano(self, n): restante = n nro_romano = '' for i in range(len(self.valores)): nro_romano, restante = self.agregar_nro_romano(restante, self.valores[i], self.simbolos[i], nro_romano) return nro_romano def agregar_nro_romano(self, n, numero, valor_romano, num_romano): restante = n while restante >= numero: num_romano = num_romano + valor_romano restante -= numero return num_romano, restante class NumeroRomanoTest(unittest.TestCase): def setUp(self): self.nro_romano = NumeroRomano() def test_1_romano(self): nro_romano = self.nro_romano.conv_a_romano(1) self.assertEqual('I', nro_romano) def test_2_romano(self): nro_romano = self.nro_romano.conv_a_romano(2) self.assertEqual('II', nro_romano) def test_3_romano(self): nro_romano = self.nro_romano.conv_a_romano(3) self.assertEqual('III', nro_romano) def test_4_romano(self): nro_romano = self.nro_romano.conv_a_romano(4) self.assertEqual('IV', nro_romano) def test_5_romano(self): nro_romano = self.nro_romano.conv_a_romano(5) self.assertEqual('V', nro_romano) def test_9_romano(self): nro_romano = self.nro_romano.conv_a_romano(9) self.assertEqual('IX', nro_romano) def test_10_romano(self): nro_romano = self.nro_romano.conv_a_romano(10) self.assertEqual('X', nro_romano) def test_40_romano(self): nro_romano = self.nro_romano.conv_a_romano(40) self.assertEqual('XL', nro_romano) def test_50_romano(self): nro_romano = self.nro_romano.conv_a_romano(50) self.assertEqual('L', nro_romano) def test_90_romano(self): nro_romano = self.nro_romano.conv_a_romano(90) self.assertEqual('XC', nro_romano) def test_100_romano(self): nro_romano = self.nro_romano.conv_a_romano(100) self.assertEqual('C', nro_romano) def test_400_romano(self): nro_romano = self.nro_romano.conv_a_romano(400) self.assertEqual('CD', nro_romano) def test_500_romano(self): nro_romano = self.nro_romano.conv_a_romano(500) self.assertEqual('D', nro_romano) def test_900_romano(self): nro_romano = self.nro_romano.conv_a_romano(900) self.assertEqual('CM', nro_romano) def test_989_romano(self): nro_romano = self.nro_romano.conv_a_romano(989) self.assertEqual('CMLXXXIX', nro_romano) def test_1000_romano(self): nro_romano = self.nro_romano.conv_a_romano(1000) self.assertEqual('M', nro_romano) if __name__ == '__main__': unittest.main()