2017年12月19日 星期二

a013-1: 羅馬數字-1

a013-1: 羅馬數字 
如果生活在數世紀之前的古羅馬,你應該用過 V 來表示五。V 和 5 這兩個符號都可以用來表示數目五。用來表示數目的符號稱作數字。而羅馬人用來表示數目的符號就是羅馬數字。

以下是七個基本的羅馬數字︰

羅馬數字 數目
I 1
V 5
X 10
L 50
C 100
D 500
M 1,000
所有其他的數目都是由這些數字組合而成。數目都是由左寫到右,通常值是等於組成的羅馬數字加起來。

例如十七可以表示為
        X+V+I+I=XVII
        10+5+1+1=17
表示羅馬數字可以使用減法來取代加法的規則。例如四可以不用四個一相加來表示 IIII,而採用五減一來表示 IV。利用這類規則,羅馬人能夠減化許多數目的表示方式,例如 IX 取代 VIIII 表示 9,及 CD 取代 CCCC 表示 400。


今日我們並不確定羅馬符號的起源為何。例如符號 V 的起源主要有兩個理論。有些學者認為五最早是用握拳、拇指在外的手勢來表示。最後以象形文字書寫而簡化為 V。

#數字轉羅馬數字

def roman(number):
    ROMANS = (
          ('MMM', 3000),
          ('MM',  2000),
          ('M',  1000),
          ('CM', 900),
          ('DCCC',800),
          ('DCC', 700),
          ('DC', 600),
          ('D',  500),
          ('CD', 400),
          ('CCC',300),
          ('CC',200),
          ('C',  100),
          ('XC', 90),
          ('LXXX', 80),
          ('LXX', 70),
          ('LX', 60),
          ('L',  50),
          ('XL', 40),
          ('XXX', 30),
          ('XX', 20),
          ('X',  10),
          ('IX', 9),
          ('VIII',8),
          ('VII', 7),
          ('VI', 6),
          ('V',  5),
          ('IV', 4),
          ('III', 3),
          ('II', 2),
          ('I',  1))
    
    result=""

    for roman,value in ROMANS:
        while number>=value:
            number-=value
            result+=roman
            print(result)
    return result



print ("10進制轉羅馬數字")
intX=int(input("請輸入數字 :"))
print()
print(roman(intX))

============ RESTART: D:/Python_APSC/a013-1.py ==============
10進制轉羅馬數字
請輸入數字 :1234

M
MCC
MCCXXX
MCCXXXIV
MCCXXXIV
>>> 
===================== RESTART: D:/Python_APSC/a013-1.py =====================
10進制轉羅馬數字
請輸入數字 :4981

MMM
MMMM
MMMMCM
MMMMCMLXXX
MMMMCMLXXXI
MMMMCMLXXXI
>>> 
===================== RESTART: D:/Python_APSC/a013-1.py =====================
10進制轉羅馬數字
請輸入數字 :874

DCCC
DCCCLXX
DCCCLXXIV
DCCCLXXIV

>>> 




沒有留言:

張貼留言

WOKWI DHT22 & LED , Node-Red + SQLite database

 WOKWI DHT22 & LED , Node-Red + SQLite database Node-Red程式 [{"id":"6f0240353e534bbd","type":"comment&...