39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf8 -*-
|
|
|
|
RZA = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000, '\u2181': 5000, '\u2182': 10000,
|
|
'\u2187': 50000, '\u2188': 100000}
|
|
AZR = [(100000, '\u2188'), (90000, '\u2182\u2188'), (50000, '\u2187'), (40000, '\u2182\u2187'),
|
|
(10000, '\u2182'), (9000, 'M\u2182'), (5000, '\u2181'), (4000, 'M\u2181'), (1000, 'M'), (900, 'CM'), (500, 'D'),
|
|
(400, 'CD'), (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')]
|
|
while True:
|
|
rz = input("Bitte römische Zahl eingeben: ")
|
|
rz = rz.rstrip()
|
|
rz = rz.upper()
|
|
|
|
try:
|
|
az = 0
|
|
for i in range(len(rz)):
|
|
if i == len(rz) - 1:
|
|
az += RZA[rz[i]]
|
|
print(rz, "=", az)
|
|
else:
|
|
if RZA[rz[i]] < RZA[rz[i + 1]]:
|
|
az -= RZA[rz[i]]
|
|
else:
|
|
az += RZA[rz[i]]
|
|
except:
|
|
try:
|
|
zahl = int(rz)
|
|
if zahl > 500000:
|
|
print("Nööö, größer als 500000 mag ich nicht")
|
|
continue
|
|
rom = ""
|
|
for az, romz in AZR:
|
|
count = zahl // az
|
|
zahl -= az * count
|
|
rom += romz * count
|
|
print(rz, "=", rom)
|
|
except:
|
|
print("Es konnte keine römische oder arabische Zahl erkannt werden")
|