บทความนี้สอนเขียนวิธีแปลงเลขโรมันเป็นเลขอารบิก Python โดยเริ่มต้นจากการสร้างข้อมูลแบบพจนานุกรม (data dictionary) เพื่อเก็บค่าตัวเลข กับเลขโรมัน จากนั้นใช้คำสั่ง for วนลูปแบบย้อนกลับ และแปลงเลขโรมันเป็นเลขอารบิก พร้อมแสดงผลลัพธ์ออกสู่หน้าจอ
ตัวอย่าง แปลงเลขโรมันเป็นเลขอารบิก Python
def roman_to_nunber(roman):
values = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
total = 0
prev_value = 0
for char in reversed(roman):
value = values[char]
if value >= prev_value:
total = total + value
else:
total = total - value
prev_value = value
result = roman+'\t= '+str(total)
return result
print( roman_to_nunber('I') )
print( roman_to_nunber('II') )
print( roman_to_nunber('III') )
print( roman_to_nunber('IV') )
print( roman_to_nunber('V') )
print( roman_to_nunber('VI') )
print( roman_to_nunber('VII') )
print( roman_to_nunber('VIII') )
print( roman_to_nunber('IX') )
print( roman_to_nunber('X') )
print( roman_to_nunber('XI') )
print( roman_to_nunber('XII') )
print(roman_to_nunber('LVIII'))
print(roman_to_nunber('MCMXCIV'))
ผลลัพธ์
I = 1
II = 2
III = 3
IV = 4
V = 5
VI = 6
VII = 7
VIII = 8
IX = 9
X = 10
XI = 11
XII = 12
LVIII = 58
MCMXCIV = 1994
จากตัวอย่างโค้ดอธิบายได้ดังนี้
1. สร้างฟังก์ชันชื่อ roman_to_nunber รับค่า paramter 1 ตัวคือเลขโรมัน ที่ต้องการแปลงเป็นเลขอารบิก
2. สร้างพจนานุกรม (data dictionary) เก็บค่าตัวเลขของตัวอักษรโรมันแต่ละตัว
3. สร้างตัวแปร total คือผลรวมเลขอารบิก และ prev_value คือเก็บค่าตัวเลขของเลขอักษรโรมันตัวก่อนหน้า
4. วนลูปแบบย้อนกลับด้วย reversed กรณีถ้าตัวเลขของเลขโรมันมีค่ามากกว่า prev_value ให้บวก total เพิ่ม ถ้าไม่ใช้ให้ลบ total
5. ใช้งานโปรแกรมผ่านฟังก์ชัน roman_to_nunber พร้อมกำหนดค่า paramter เป็นเลขโรมันที่ต้องการแปลงเลขอารบิก เช่น roman_to_nunber('I')