⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roman72.py

📁 Dive Into Python,Some Example Sources.
💻 PY
字号:
"""Convert to and from Roman numeralsThis program is part of "Dive Into Python", a free Python book forexperienced programmers.  Visit http://diveintopython.org/ for thelatest version."""__author__ = "Mark Pilgrim (mark@diveintopython.org)"__version__ = "$Revision: 1.3 $"__date__ = "$Date: 2004/05/05 21:57:20 $"__copyright__ = "Copyright (c) 2001 Mark Pilgrim"__license__ = "Python"import re#Define exceptionsclass RomanError(Exception): passclass OutOfRangeError(RomanError): passclass NotIntegerError(RomanError): passclass InvalidRomanNumeralError(RomanError): pass#Define digit mappingromanNumeralMap = (('M',  1000),                   ('CM', 900),                   ('D',  500),                   ('CD', 400),                   ('C',  100),                   ('XC', 90),                   ('L',  50),                   ('XL', 40),                   ('X',  10),                   ('IX', 9),                   ('V',  5),                   ('IV', 4),                   ('I',  1))def toRoman(n):    """convert integer to Roman numeral"""    if not (0 < n < 5000):        raise OutOfRangeError, "number out of range (must be 1..4999)"    if int(n) <> n:        raise NotIntegerError, "non-integers can not be converted"    result = ""    for numeral, integer in romanNumeralMap:        while n >= integer:            result += numeral            n -= integer    return result#Define pattern to detect valid Roman numeralsromanNumeralPattern = '^M?M?M?M?(CM|CD|D?C?C?C?)(XC|XL|L?X?X?X?)(IX|IV|V?I?I?I?)$'def fromRoman(s):    """convert Roman numeral to integer"""    if not s:        raise InvalidRomanNumeralError, 'Input can not be blank'    if not re.search(romanNumeralPattern, s):        raise InvalidRomanNumeralError, 'Invalid Roman numeral: %s' % s    result = 0    index = 0    for numeral, integer in romanNumeralMap:        while s[index:index+len(numeral)] == numeral:            result += integer            index += len(numeral)    return result

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -