A practical Roman numerals implementation (also an example of Python project structure)
Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
.travis.yml
LICENSE-MIT
MANIFEST.in
README.rst
rome.py
setup.py
test_rome.py
tox.ini

README.rst

Rome

Overview

Rome is the first industrial-strength Roman numerals implementation for Python. It features Roman-to-Arabic and Arabic-to-Roman numerals convertion, as well as normalization of denormalized Roman numerals using unified object-oriented interface. It is developed using test-driven development, and features an extensive test-suite.

Installation

pip install rome==0.0.3

Usage

>>> from rome import Roman

>>> Roman('IX')
Roman('IX')

>>> str(Roman('IX'))
'IX'

>>> int(Roman('IX'))  # to Arabic numerals
9

>>> Roman('IX') == 9
True

>>> Roman('IX') + Roman('XI') == Roman('XX')
True

>>> Roman('XXI') - 13 == 8
True

>>> Roman(4)  # from Arabic numerals
Roman('IV')

>>> Roman(1903)
Roman('MCMIII')

>>> Roman('IIII')  # bring to normalized form
Roman('IV')

>>> Roman('MDCCCCLXXXXVIIII')
Roman('MCMXCIX')

>>> int(Roman('MCMXCIX'))
1999

>>> int(Roman('M cM xC iX'))  # spaces and mixed case are
...                           # allowed for readability
1999