Тема: Алгорит зміни числа с римського в арабський
Написав прогу котра змінює формат числа з арабського в римський.
Можна почитати тут.
Кому лінь переходити:
# _*_ 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
А як зробити щоб змінювало навпаки? Тобто алгоритм на словах. Я в пошуковиках шукав - є щось але вже у вигляді коду і то незрозумілого.
І якщо можна покритикуйте вище написану прогу І чи не забагато коду до такої простой задачі?