Dive Into Python: call for comments (long)

Sean 'Shaleh' Perry shaleh at valinux.com
Mon Apr 23 16:40:47 EDT 2001


>         self.knownValues = ((31, 'XXXI'),
>                             (148, 'CXLVIII'),
>                             (294, 'CCXCIV'),
>                             (312, 'CCCXII'),
>                             (421, 'CDXXI'),
>                             (528, 'DXXVIII'),
>                             (621, 'DCXXI'),
>                             (782, 'DCCLXXXII'),
>                             (870, 'DCCCLXX'),
>                             (941, 'CMXLI'),
>                             (1043, 'MXLIII'),
>                             (1110, 'MCX'),
>                             (1226, 'MCCXXVI'),
>                             (1301, 'MCCCI'),
>                             (1485, 'MCDLXXXV'),
>                             (1509, 'MDIX'),
>                             (1607, 'MDCVII'),
>                             (1754, 'MDCCLIV'),
>                             (1832, 'MDCCCXXXII'),
>                             (1993, 'MCMXCIII'),
>                             (2074, 'MMLXXIV'),
>                             (2152, 'MMCLII'),
>                             (2212, 'MMCCXII'),
>                             (2343, 'MMCCCXLIII'),
>                             (2499, 'MMCDXCIX'),
>                             (2574, 'MMDLXXIV'),
>                             (2646, 'MMDCXLVI'),
>                             (2723, 'MMDCCXXIII'),
>                             (2892, 'MMDCCCXCII'),
>                             (2975, 'MMCMLXXV'),
>                             (3051, 'MMMLI'),
>                             (3185, 'MMMCLXXXV'),
>                             (3250, 'MMMCCL'),
>                             (3313, 'MMMCCCXIII'),
>                             (3408, 'MMMCDVIII'),
>                             (3501, 'MMMDI'),
>                             (3610, 'MMMDCX'),
>                             (3743, 'MMMDCCXLIII'),
>                             (3844, 'MMMDCCCXLIV'),
>                             (3940, 'MMMCMXL'))
> 

what about simple cases like 'I' or 'V'?  'IV'?

Also, I find

#Define pattern to detect valid Roman numerals
romanNumeralPattern = \
    re.compile('^M?M?M?(CM|CD|D?C?C?C?)(XC|XL|L?X?X?X?)(IX|IV|V?I?I?I?)$')

confusing.  As I read this, I see 'begins with optionally up to 3 M's, then
either CM, CD, or some permutation of D and C'.  Yet this appears to match
something as simply as V.  Why?

Also, perhaps use of the {} operator in the regex's might help.  Maybe not.





More information about the Python-list mailing list