Тема: Алгорит зміни числа с римського в арабський
Написав прогу котра змінює формат числа з арабського в римський.
Можна почитати тут.
Кому лінь переходити:
# _*_ coding: cp1251 _*_
# програма для зміни формату чисел: з арабського в римський
def arabic_roman(number):
    """
Функція змінює формат числа з арабського в римський.
Ліміт числа яке може змінити - 3999
    """ 
    number = str(number)
    const_dict = {'0':'', '1':'I', '2':'II', '3':'III', '4':'IV', '5':'V', \
                  '6':'VI', '7':'VII', '8':'VIII', '9':'IX', '10':'X', \
                  '50':'L', '100':'C', '500':'D', '1000':'M'}
    result_list = []
    result = ''
    if 0<=int(number)<=3999:
        if const_dict.has_key(number):
            result = const_dict[number]
        else:
            if len(number)>=2: # формує результат для одиниць і десятків
                result_list.append(const_dict[number[-1]])
                if number[-2]=='1':
                    result_list.append('X')
                elif number[-2]=='2':
                    result_list.append('XX')
                elif number[-2]=='3':
                    result_list.append('XXX')
                elif number[-2]=='4':
                    result_list.append('XL')
                elif number[-2]=='5':
                    result_list.append('L')
                elif number[-2]=='6':
                    result_list.append('LX')
                elif number[-2]=='7':
                    result_list.append('LXX')
                elif number[-2]=='8':
                    result_list.append('LXXX')
                elif number[-2]=='9':
                    result_list.append('XC')
            if len(number)>=3: # формує результат для сотень
                if number[-3]=='1':
                    result_list.append('C')
                if number[-3]=='2':
                    result_list.append('CC')
                if number[-3]=='3':
                    result_list.append('CCC')
                if number[-3]=='4':
                    result_list.append('CD')
                if number[-3]=='5':
                    result_list.append('D')
                if number[-3]=='6':
                    result_list.append('DC')
                if number[-3]=='7':
                    result_list.append('DCC')
                if number[-3]=='8':
                    result_list.append('DCCC')
                if number[-3]=='9':
                    result_list.append('CM')
            if len(number)==4: # формує результат для тисяч
                result_list.append('M'*int(number[-4]))
            result_list.reverse()
            result = ''.join(result_list) # результат переводиться в string
    return result
    
if __name__ == '__main__':
    number = raw_input('Input data, please:')
    result = arabic_roman(number)
    print result А як зробити щоб змінювало навпаки? Тобто алгоритм на словах. Я в пошуковиках шукав - є щось але вже у вигляді коду і то незрозумілого.
І якщо можна покритикуйте вище написану прогу   І чи не забагато коду до такої простой задачі?
 І чи не забагато коду до такої простой задачі?




