Skip to content

Instantly share code, notes, and snippets.

@gatukgl
Last active August 29, 2015 14:05
Show Gist options
  • Save gatukgl/a255d9afb911693664f9 to your computer and use it in GitHub Desktop.
Save gatukgl/a255d9afb911693664f9 to your computer and use it in GitHub Desktop.
Roman Number
######### Kata: Roman Number 1-30 #########
import unittest
class RomanNumberTest(unittest.TestCase):
def setUp(self):
self.roman_number = RomanNumber()
def test_number_1_should_return_I(self):
result = self.roman_number.take(1)
self.assertEqual(result, 'I')
def test_number_2_should_return_II(self):
result = self.roman_number.take(2)
self.assertEqual(result, 'II')
def test_number_3_should_return_III(self):
result = self.roman_number.take(3)
self.assertEqual(result, 'III')
def test_number_4_should_return_IV(self):
result = self.roman_number.take(4)
self.assertEqual(result, 'IV')
def test_number_5_should_return_V(self):
result = self.roman_number.take(5)
self.assertEqual(result, 'V')
def test_number_6_should_return_VI(self):
result = self.roman_number.take(6)
self.assertEqual(result, 'VI')
def test_number_7_should_return_VII(self):
result = self.roman_number.take(7)
self.assertEqual(result, 'VII')
def test_number_9_should_return_IX(self):
result = self.roman_number.take(9)
self.assertEqual(result, 'IX')
def test_number_10_should_return_X(self):
result = self.roman_number.take(10)
self.assertEqual(result, 'X')
def test_number_11_should_return_XI(self):
result = self.roman_number.take(11)
self.assertEqual(result, 'XI')
def test_number_14_should_return_XIV(self):
result = self.roman_number.take(14)
self.assertEqual(result, 'XIV')
def test_number_18_should_return_XVIII(self):
result = self.roman_number.take(18)
self.assertEqual(result, 'XVIII')
def test_number_20_should_return_XX(self):
result = self.roman_number.take(20)
self.assertEqual(result, 'XX')
def test_number_21_should_return_XXI(self):
result = self.roman_number.take(21)
self.assertEqual(result, 'XXI')
def test_number_22_should_return_XXII(self):
result = self.roman_number.take(22)
self.assertEqual(result, 'XXII')
def test_number_24_should_return_XXIV(self):
result = self.roman_number.take(24)
self.assertEqual(result, 'XXIV')
def test_number_28_should_return_XXVIII(self):
result = self.roman_number.take(28)
self.assertEqual(result, 'XXVIII')
def test_number_29_should_return_XXIX(self):
result = self.roman_number.take(29)
self.assertEqual(result, 'XXIX')
def test_number_30_should_return_XXX(self):
result = self.roman_number.take(30)
self.assertEqual(result, 'XXX')
class RomanNumber:
def take(self, number):
result = ''
round = 1
if number >= 20:
round = number / 10
number = number % 10
result = round * 'X'
if number >=9:
if number == 9:
result += 'I'
number += 1
result += 'X'
number -= 10
if number >= 4:
if number <= 4:
result += 'I'
number += 1
result += 'V'
number -= 5
result += number * 'I'
return result
if __name__ == "__main__":
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment